前提・実現したいこと
仮想ドライブなのか
ハードウェアドライブなのか
を判別したいです。
出来れば仮想ドライブのルートディレクトリを取得したいです。
発生している問題
"ネットーワークドライブの割当解除" or "仮想ドライブをアンマウント" をする
関数を作りたいのですが
仮想ドライブ か ハードウェアドライブなのか
判別が出来ません。
該当のソースコード
powershell
1function _Set_NetDrive ([string]$Name, [string]$Root) { 2 [OutputType([bool])] 3 $null = if(!(_Remove_NetDrive -Name $Name)) { 4 return $false 5 } 6 #$null = New-PSDrive -Name $Name -PSProvider FileSystem -Root $Root -Persist 7 #関数化すると関数の終了時点で解除されてしまう等問題が多発したため今は利用しない 8 $ErrorActionPreference = "silentlycontinue" 9 if($Root.Substring(0,2) -eq "\") 10 { 11 $Net = net use $($Name + ":") $Root 12 } 13 else 14 { 15 $null = subst $($Name + ":") $Root 16 #成功してても$nullが帰ってきたため フラグを立てる 17 $Net = $true 18 } 19 $ErrorActionPreference = "continue" 20 if($Net -eq $null) { 21 return $false 22 } 23 $null = net use /persistent:yes 24 return $true 25} 26 27function _Remove_NetDrive ([string]$Name) { 28 [OutputType([bool])] 29 $null = switch ($true) 30 { 31 {$(_Get_PSDriveInfo -Name $Name) -ne $null} { 32 if($($(Get-WMIObject -query $("Select * From Win32_LogicalDisk Where DeviceID='" + $Name + ":' and DriveType = 4")).ProviderName) -as 'bool') 33 { 34 #ネットワークドライブの割当解除 35 net use $($Name + ":") /delete /y 36 } 37 else 38 { 39 #仮想ドライブか判断できない 40 #仮想ドライブの解除 41 Subst $($Name + ":") /d 42 } 43 #Remove-PSDrive $Name 44 } 45 {$(_Get_PSDriveInfo -Name $Name) -ne $null} { 46 return $false 47 } 48 } 49 return $true 50}
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/14 04:44 編集
2018/09/14 04:44
2018/09/14 04:46