在Powershell中使用用户名/密码连接到networking文件夹
我经常访问Powershell中的共享networking文件夹来抓取文件等。但是,如果共享需要用户名/密码,Powershell不会提示我这些,不像Windows资源pipe理器。 如果我先在Windows资源pipe理器中连接到文件夹,Powershell将允许我连接。
我如何在PowerShell中validation自己?
乍一看,一个真正想要使用New-PSDrive提供凭据。
> New-PSDrive -Name P -PSProvider FileSystem -Root \\server\share -Credential domain\user
失败!
新的PSDrive:无法检索该cmdlet的dynamic参数。 无法为“FileSystem”提供程序检索NewDrive的dynamic参数。 提供程序不支持使用凭据。 请不要指定凭证再次执行操作。
该文档指出您可以提供PSCredential对象,但是如果仔细观察,cmdlet不支持此对象。 也许在下一个版本我猜。
因此,您可以使用net use或WScript.Network对象,调用MapNetworkDrive函数:
$net = new-object -ComObject WScript.Network $net.MapNetworkDrive("u:", "\\server\share", $false, "domain\user", "password")
在PowerShell 3.0中编辑New-PSDrive
显然,使用较新版本的PowerShell,New-PSDrive cmdlet可以使用凭证映射networking共享!
New-PSDrive -Name P -PSProvider FileSystem -Root \\Server01\Public -Credential user\domain -Persist
这不是一个PowerShell特定的答案,但你可以使用“NET USE”首先对共享进行身份validation:
net use \\server\share /user:<domain\username> <password>
然后在PowerShell中做任何你需要做的事情…
PowerShell 3现在支持这个开箱即用的function。
如果您停留在PowerShell 2上,则基本上必须使用legacy net use
命令(如前所述)。
在同一台机器上,我从常规命令提示符以及PowerShell v2命令提示符下尝试相同的NET USE
命令:
NET USE链接: SharePoint
In CMD
它工作得很好。
In PS
,它表示它工作正常,驱动器映射。 但是,大多数情况下,键入NET USE
时列出的驱动器状态为空白,驱动器映射不起作用(即无法从映射驱动器获取数据)。
这可能是一个SharePoint的问题,因为从PowerShell的NET USE
有时可以工作,有时不会,但是看起来CMD和PS之间还是有区别的。
我想在这里分享我的经验。
我经常使用networking驱动器从远程服务器获取信息。 如果您在远程服务器上使用Powershell 2.0。
最好的select是使用NET USE命令。
Net use \\10.10.10.10\SharedDrive "password@123" /User:Abcd.com\username