我有一个sharepoint 2013服务器,我可以通过网络浏览器使用Windows身份验证登录。当我使用浏览器登录时,如果我 - 使用相同的浏览器 - 浏览到http://mysharepointserver/_api/web我会得到一些有用的XML。
但是,我想编写一个使用此XML的powershell脚本。为此,请遵循此页面的建议: How to make an authenticated web request in Powershell?
我写了以下代码:
$PWord = ConvertTo-SecureString –String "MyAwesomePassword" –AsPlainText -Force
$creds = New-Object System.Net.NetworkCredential("MyUserName",$PWord,"TheDomain")
$webclient = New-Object System.Net.WebClient
$webclient.Credentials = $creds
$url = "http://mysharepointserver/_api/web"
$output = $webclient.DownloadString($url)
echo $output
但是,当我运行此代码时,收到错误消息:
Exception calling "DownloadString" with "1" argument(s): "The remote server returned an error: (403) Forbidden."
即使我可以使用网络浏览器访问相同的网址,如果我使用弹出用于身份验证的Windows登录对话框输入(相同)凭据。
是否有人知道是否可以使用Powershell执行此操作?
谢谢所有
答案 0 :(得分:-1)
为什么不使用Powershell附带的默认CMDlet(除非使用PS2或更低版本)? Invoke-Webrequest和Invoke-Restmethod都支持-credential开关,可用于对Web服务器进行身份验证。 您也可以使用Get-credential来存储您的凭据(尽管您不能通过这种方式从文件或字符串获取yhem,至少不是密码)
脚本(伪代码,因为我手机上没有代码标签)看起来像这样: Invoke-Restmethod -uri' https://savingplaces.org/' -credential(get-credential)