次のpowershell 2.0スクリプトがあります:
function getFreeDrive
{
[char[]]$driveLetters = @([char]'E'..[char]'Z')
foreach ($d in $driveLetters) {
if(!(Test-Path -Path "$d`:" -IsValid)) {
return $d
}
}
}
$drive = getFreeDrive
subst "$drive`:" T:\temp
ls "$drive`:\" # just a dummy command
subst "$drive`:" /D
スクリプトを実行したい
- 最初の未使用のドライブ文字を見つける
- subst で新しいドライブを作成する
- このドライブで何かをする
- substでドライブを削除します
初めてスクリプトを実行すると、スクリプトは正常に動作します。同じシェルでスクリプトをもう一度実行すると、lsコマンドから、ドライブが見つからないというエラーが表示されます。新しいシェルを開いてスクリプトを実行すると、再び正常に実行されます。
私のスクリプトの問題は何ですか? 同じ PowerShell インスタンスでスクリプトを複数回実行するにはどうすればよいですか?
あるいは、substコマンドの代わりになるものはありますか? PowerShell ドライブを使用してみましたが、他の Windows プログラム (devenv.exe など) では動作しません。