2017-11-10 8 views
2

は、私は私の外付けハードドライブに次の内容のautorun.infファイルを持っている:それはMasterSword、ようにプラグインだ後PowerShell 5.0のラベルでドライブを取得するにはどうすればよいですか?

[Autorun] 
Label=MasterSword 

これは私の外付けハードドライブにラベルを付けます。私はそれにいくつかのスクリプトを格納して、私の$profileに含めたいので、PowerShellが起動したとき、またはインタプリタにプロファイルが再組み込まれたときに読み込まれるようにします。

多くの人が知っているように、外付けドライブにハードコードされたドライブ文字を使用すると、ドライブ文字が変更されるたびにその外付けハードドライブスクリプトへの参照が変更され、組み込みに失敗する可能性があります。

だから私は、私は2つの質問があると思います:

  1. は、どのように私はautorun.infに設定されたドライブラベルを手に入れるのですか?

  2. ドライブラベルをドライブレターに変換して、そのドライブに保存されているスクリプトを参照する方法を教えてください。

答えて

4

私は少し詳しく研究しました1位に答えるために

:この小さなスニペットを思い付いた時間と

$scriptDrive = Get-Volume -FileSystemLabel MasterSword 

#2に答えるために:

$scriptDriveLetter = $scriptDrive.DriveLetter 

と一緒に、彼らは次のようになります。

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

または別の解釈の場合:

$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 

このように、あなたのスクリプトは、 "スクリプト" フォルダ内にあると仮定すると、あなたがそれらを見つけることができますwith:

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

この解決方法は機能しません。この例のラベル付きドライブには説明がありません。自分でテストするには '$ psdrive = Get-PSDrive'' $ psdrive.Description'を使ってください。 – ExcellentSP

+1

ああ、あなたの答えは 'Get-Volume'を使ってもっと正確に見えます。 –

関連する問題