如何在PowerShell中将现有连接与网络位置断开连接?

时间:2013-06-05 11:51:23

标签: .net powershell powershell-v2.0 powershell-v3.0 net-use

我断开与Powershell中的ALL设备断开连接:

 Invoke-Expression -Command "net use * /delete /y"

我需要为特定设备执行此操作,而不是从ALL断开连接。

问题: 如果存在与特定网络位置的连接并且已断开连接(删除连接),我该如何测试?

我想要实现的目标是:

IF (there is already a connection to a network drive with below details)

   "\\poooh.fooo.boo.com\MyFolder" user="FOO\winnie" password="12345678"

THEN 
    {

      Disconnect from this network drive #via NET USE I guess
      And CREATE a PS-DRIVE to the same network location

    }

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

$nc = gwmi Win32_NetworkConnection 

if  (( $nc  | select -expa remotename ) -contains '\\poooh.fooo.boo.com\MyFolder' )
{
$u =  $nc | ? { $_.remotename -eq '\\poooh.fooo.boo.com\MyFolder' } | select -expa localname
$netobj=New-Object -ComObject WScript.Network
$netobj.RemoveNetworkDrive($u)

}

如果连接已打开文件,则删除可能会失败。

答案 1 :(得分:0)

使用Test-Path cmdlet。如果路径无效,它将返回$false。也就是说,路径不存在或用户权限不足以阻止访问。像这样,

PS C:\> test-path k: # There is no k: drive
False
PS C:\> test-path \\ServerWithoutPermissions\c$
False
PS C:\> test-path \\NonExistingHost\share
False