2016-11-23 99 views
1

我试图从网络共享中获取文件。我需要通过凭据进行身份验证。获取内容与身份验证

#Define credentials 
#=========== 
$secpasswd = ConvertTo-SecureString “mypassword” -AsPlainText -Force 
$credentials = New-Object System.Management.Automation.PSCredential (“myuser”, $secpasswd) 


#Get the file 
#=========== 
$commandresult = Get-Content "\\$tsmhost\prtg_output\STGPOOLS.txt" -Credential $credentials -Force 

然而,这导致

获取内容:不能检索该cmdlet的动态参数。 FileSystem提供程序仅在New-PSDrive cmdlet上支持凭据。 无需指定凭证即可再次执行操作。

当然,如果我没有指定凭证,我会得到一个拒绝访问。
我相信有一个解决方法是将共享文件夹安装为网络驱动器,但这看起来效率不高,而且由于该脚本可能一次运行多次,因此我可能会有重复的驱动器。

任何会是最有效的方法来完成这一点?

谢谢!

回答

0

New-PSDrive创建PSDrive来使用您的凭据,然后使用Get-Content读取文件:

New-PSDrive -Name X -PSProvider FileSystem -Root \\$tsmhost\prtg_output -Credential $credentials 

然后:

Get-Content X:\STGPOOLS.txt 
+0

是的,的确,这是一个解决办法,但不这非常低效?另外,由于该脚本可能会同时运行多次,因此我可能会有重复的驱动器。 – mitch2k

+0

你也可以使用本地的'net use',那么一旦你输入了有效的信任,它就不会再要求你提供相同的资源 – Avshalom