0
0

More than 1 year has passed since last update.

【PowerShell】未割り当てのドライブレターを探す方法

Last updated at Posted at 2022-08-02

はじめに

以前に書いたドライブレターを変える方法では、「現在割り当てられているドライブレターを、未割り当ての別のドライブレターに変える方法」を紹介しました。

今回はそれと関連して、「未割り当ての(空いている)ドライブレターをPowerShellで探す方法」をまとめてみました。
未割り当てのドライブレターを把握できれば、例えばPowerShellで「共有フォルダをドライブとして割り当てる」という時に、割り当て済みのドライブレターを指定したことによるエラーを防ぐことが出来ます。

作成したスクリプト

  • 今回は「A~Zまでの全ドライブレター」から「割り当て済みのドライブレター」を差し引いて、「割り当て済みのドライブレター」を求める方法を採用しました。
    • 割り当て済みのドライブレターを直接的に求める方法が分からなかったので、このような実装になりました...
  • 「A~Zまでの全ドライブレター」を生成する部分では、Graceful way to create an alphabet arrayに掲載されているコードをほぼそのまま利用させてもらいました。
find_assignable_letters.ps1
# A:~Z:までの全ドライブレターを作る。
$drive_letters = @()

for ([byte]$c = [char]'A'; $c -le [char]'Z'; $c++)
{  
    $drive_letters += ([char]$c + ":")
}

# 現在割り当てられているドライブレターを取得する。
$assigned_letters = Get-WmiObject Win32_LogicalDisk | % { $_.Name}

# 全ドライブレターから割り当て済みのドライブレターを差し引く
$result = Compare-Object -ReferenceObject $drive_letters -DifferenceObject $assigned_letters -PassThru | Sort-Object

# 結果を表示する
echo $result

実行した環境

  • 以下の図のように、CDFHのドライブレターが割り当て済み(使用されている)環境において、上記のスクリプトを実行しました。

image.png

実行結果

  • 割り当て済みのCDFHを除いたドライブレターが抽出されました。
実行結果
A:
B:
E:
G:
I:
J:
K:
L:
M:
N:
O:
P:
Q:
R:
S:
T:
U:
V:
W:
X:
Y:
Z:

参考URL

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0