2013-06-05 232 views
0

我从在PowerShell中所有的设备像这样断开:如何在PowerShell中断开现有连接到网络位置的连接?

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

,我需要做的是为特定设备,而不是从全部断开。

问题: 如何测试如果已经存在到特定网络位置的连接和DISCONNECT(删除连接)?

我试图在一般的实现是这样的:

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 

    } 

回答

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) 

} 

删除可能会失败。

+0

在if子句中,一个到共享位置的开放连接。我知道了。 而在下面的行中,您是否将映射的驱动器名称变为$ u,并且只有在您删除之后?我对么? – pencilCake

+0

@pencilCake是的,你测试是否有打开的文件,并根据结果删除映射的驱动器或做别的.. –

+0

好的。使敏感,但如果本地名称是空的,这是我的情况。 – pencilCake

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 
+0

但我不知道它被映射到什么字母“\\ poooh.fooo.boo.com \ MyFolder”user =“FOO \ winnie”password =“12345678” – pencilCake