我经常访问 Powershell 中的共享网络文件夹以获取文件等。但如果共享需要用户名/密码,Powershell 不会提示我输入这些,这与 Windows 资源管理器不同。如果我首先在 Windows 资源管理器中连接到该文件夹,Powershell 将允许我连接。
如何在 Powershell 中验证自己的身份?
我经常访问 Powershell 中的共享网络文件夹以获取文件等。但如果共享需要用户名/密码,Powershell 不会提示我输入这些,这与 Windows 资源管理器不同。如果我首先在 Windows 资源管理器中连接到该文件夹,Powershell 将允许我连接。
如何在 Powershell 中验证自己的身份?
乍一看,人们真的很想使用New-PSDrive
提供凭据。
> New-PSDrive -Name P -PSProvider FileSystem -Root \\server\share -Credential domain\user
New-PSDrive:无法检索 cmdlet 的动态参数。无法为“文件系统”提供程序检索 NewDrive 的动态参数。提供程序不支持使用凭据。请在不指定凭据的情况下再次执行该操作。
文档指出您可以提供一个PSCredential
对象,但如果您仔细观察,cmdlet 还不支持这一点。也许在下一个版本中我猜。
因此,您可以使用net use
或WScript.Network
对象,调用MapNetworkDrive
函数:
$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive("u:", "\\server\share", $false, "domain\user", "password")
显然,对于较新版本的 PowerShell,该New-PSDrive
cmdlet 可以使用凭据映射网络共享!
New-PSDrive -Name P -PSProvider FileSystem -Root \\Server01\Public -Credential user\domain -Persist
这不是特定于 PowerShell 的答案,但您可以先使用“NET USE”对共享进行身份验证:
net use \\server\share /user:<domain\username> <password>
然后在 PowerShell 中做任何你需要做的事情......
如果您卡在 PowerShell 2 上,则基本上必须使用 legacynet use
命令(如前所述)。