我想使用PowerShell脚本从系统中删除网络驱动器。
我需要按名称查找驱动器,因为命令$net.RemoveNetworkDrive('P:',1)
需要驱动器号。
是否有命令在PowerShell中查找网络驱动器号?
我的剧本:
$Drive = "\\192.168.2.117\Blabla"
echo $Drive
cls
if (((New-Object -Com WScript.Network).EnumNetworkDrives() | Where-Object {$_ -eq $Drive}))
{
echo 'found Drive'
#$net = $(New-Object -comobject WScript.Network)
#$net.RemoveNetworkDrive('P:',1)
}
else
{
echo 'Drive not there'
}
答案 0 :(得分:3)
答案 1 :(得分:1)
我建议使用Get-PSDrive
而不是COM对象。
以下代码应该有效:
#get drive by root (note that we use "displayroot" for the comparison, "root" contains the driveletter)
Get-PSDrive | where {$_.DisplayRoot -eq "\\192.168.2.117\BlaBla"} | Remove-PSDrive
或者如果你必须使用ComObject删除驱动器,你可以执行以下操作:
$driveletter = (Get-PSDrive | where {$_.DisplayRoot -eq "\\192.168.2.117\BlaBla"}).root
$net.RemoveNetworkDrive($driveletter,$True)
答案 2 :(得分:-1)
Win32_LogicalDisk
和您的PS cmdlet的组合:
$net = $(New-Object -comobject WScript.Network)
foreach($driveLetter in Get-WMIObject -query "Select * From Win32_LogicalDisk Where DriveType = 4" | Select-Object DeviceID)
{
#$net.RemoveNetworkDrive($driveLetter, $True)
echo $driveLetter
}
这将仅删除网络驱动器,不需要任何奇怪的UNC路径或其他东西。
顺便说一句:不要使用1
,预计会有boolean
,这种范式有一天会破坏你的脚本......专业人士称之为&#34;糟糕的代码&#34; < / em>的