共有フォルダにネットワークドライブの割り当てを行っておりましたが、度々ネットワークドライブの割り当てが解除されているような事象が発生致しました。
都度割り当てを行う・共有フォルダのパスを入力する等でアクセスは行えました。
しかし、上記の事を知らない場合は対応出来ない事もあります。
知らない方に都度説明を行う事が難しいので、ネットワークドライブの割り当てを行うスクリプトを作成する事としました。
ネットワークドライブの割り当てを行う際は、net useコマンドを使用します。下記はコマンド実行イメージとなります。
PS C:\> net use "ドライブレター" "フォルダパス"
コマンドは正常に終了しました。
まだ使用されていないドライブレターに割り当てを行えればよいと考え、For Each文で対応する事とします。
まず、変数・配列を定義します。
配列Arrayに割り当ててもよいドライブレターを設定します。x/y/zでいずれかで割り当てを行いたかったので、そのように設定しました。
New-Objectコマンドで、オブジェクトを作成します。(ポップアップでコマンドの結果をユーザーにお知らせしたい意図があります。)
#割り当て対象
$Array = @("x:","y:","z:")
#フォルダパス
$File_Path = "フォルダパス"
#オブジェクトのセット
$Ws_Obj = New-Object -ComObject wscript.shell
#カウンター
$Count_Array = 0
処理は下記となります。
配列Arrayで定義しているドライブレターをTest-Pathコマンドで既に割り振られていないかの確認を行っています。
存在しない場合は、net useコマンドの実行を行います。その後、breakで処理を終了します。
変数Count_Arrayはカウンターです。処理が3回行われて、配列Arrayに存在するドライブレターが全て割り振られていた場合はポップアップでその旨をユーザーにお知らせします。
#割り当てされていないファイルパスを検索
foreach($Network_Drive in $Array){
$Count_Array += 1
if (-not(test-path $Network_Drive)){
net use $Network_Drive $File_Path
$Msg_Box = $Ws_Obj.popup($Network_Drive + "に割り当てを行いました。")
break
}
elseif($Count_Array -eq 3){
$Msg_Box = $Ws_Obj.popup("配列Arrary内で定義しているドライブは既に割り振られています。")
}
}
あまり使用する機会は思いつかないですが、何かの役に立てば幸いです。