PMPの流儀

PMPの流儀

エンジニアのページ

MENU

PowerShell 空き(フリー)ドライブレターを探す

PowerShell にてネットワークなどのUNCパスを取り扱う時に、ネットワークドライブに割り付けをしてからローカルドライブとして取り扱う時があります。
Zなど固定で済ませたいところですが、汎用化を考えて空きのドライブレターを探す関数を作ります。

PowerShellらしく、パイプを使ってみました。

# A~Zで、後ろから空きのドライブレターを取得する
Function Get-FreeDriveLetter
{
    $use = Get-PSDrive | ? {$_.Name.Length -eq 1} | % {$_.Name}
    $drive = [char]'Z'..[char]'A' | % {[char]$_} | ? { $use -notcontains $_} | Select-Object -first 1
    return $drive
}

以下は、この関数を使ってネットワークドライブを割り当てる例です

$drive = Get-FreeDriveLette

#ネットワークドライブ割り当て
New-PSDrive -Name $drive -PSProvider FileSystem -Root \\server01\share

#ネットワークドライブ切断
Remove-PSDrive -Name $drive