2017-11-10 7 views
2

는 내 외장 하드 드라이브에 다음과 같은 내용을 가진 autorun.inf 파일이 :이 MasterSword,로 연결 된 후에는PowerShell 5.0에서 레이블로 드라이브를 얻으려면 어떻게해야합니까?

[Autorun] 
Label=MasterSword 

이 내 외장 하드 드라이브를 레이블. 몇 개의 스크립트를 저장하고 내 $profile에 포함 시켜서 PowerShell이 ​​시작될 때 또는 인터프리터에 프로파일이 다시 포함될 때 (S)로드되도록합니다.

외장 드라이브에 하드 코딩 된 드라이브 문자를 사용하면 드라이브 문자가 변경 될 때마다 해당 외장 하드 드라이브 스크립트에 대한 참조가 변경되어 포함에 실패 할 수 있습니다.

그래서 나는이 개 질문이 추측 :

  1. 가 어떻게이 autorun.inf에서 설정 한 드라이브 레이블의 보류를받을 수 있나요?

  2. 저장된 드라이브를 참조 할 수 있도록 드라이브 레이블을 드라이브 문자로 어떻게 변환합니까?

답변

4

조금 더 연구했습니다. # 2

$scriptDrive = Get-Volume -FileSystemLabel MasterSword 

가 대답하기 :

$scriptDriveLetter = $scriptDrive.DriveLetter 

과 함께, 그들은 다음과 같습니다

$scriptDrive = Get-Volume -FileSystemLabel MasterSword 
$scriptDriveLetter = $scriptDrive.DriveLetter 

는 # 1에 대답하려면 : 시간은이 작은 조각 해낸

또는 다른 해석 :

$scriptDriveLetter = (Get-Volume -FileSystemLabel Mastersword).DriveLetter 

여기서 필요한 드라이브 문자는 $scriptDriveLetter에 저장됩니다.

2

당신은 시도 할 수 :

Get-PSDrive | Where-Object {$_.Description -eq "MasterSword"} 

이 같은 객체를 반환합니다 따라서

Name   : E 
Description  : MasterSword 
Provider  : Microsoft.PowerShell.Core\FileSystem 
Root   : E:\ 
CurrentLocation : Scripts 

, 스크립트는 "스크립트"폴더에있는 가정, 당신이 그들을 찾을 수 있습니다 다음을 포함합니다 :

$Root = (Get-PSDrive | Where-Object {$_.Description -eq "MasterSword"}).Root 
$Path = Join-Path $Root "Scripts" 
+0

이 솔루션은 작동하지 않습니다. 예제에서 레이블이있는 드라이브에는 설명이 없습니다. '$ psdrive = Get-PSDrive''$ psdrive.Description'을 사용하여 직접 테스트하십시오. – ExcellentSP

+1

아, 네 답은'Get-Volume'을 사용하면 더 정확 해 보입니다. –