在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