2015-10-27 81 views
1

我有一個SharePoint Server 2013服務器,我可以通過Web瀏覽器使用Windows身份驗證登錄。當我使用瀏覽器登錄時,如果我使用同一瀏覽器 - 瀏覽到http://mysharepointserver/_api/web,我會得到一些有用的XML。使用powershell與Windows身份驗證訪問sharepoint REST API

但是,我想編寫一個使用此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." 

儘管我可以使用Web瀏覽器訪問相同的URL,但如果使用彈出的Windows登錄對話框(用於身份驗證)輸入相同的憑據。

有誰知道是否有可能使用Powershell做到這一點?

感謝所有滿口爲什麼不使用默認的cmdlet來與Powershell的

+0

我不知道我的理解正確,但如果這個xml文件在SharePoint中可用文檔庫中,您可以將文檔庫映射爲具有正確憑據的Windows映射驅動器,並從那裏訪問它。 – DarkLite1

回答

-1

(除非使用PS2或更低)? Invoke-Webrequest和Invoke-Restmethod都支持-credential開關,可用於對Web服務器進行身份驗證。 你也可以使用Get-credential來存儲你的憑證(儘管你不能從文件或字符串中獲得禮物,至少不是密碼)

腳本(在僞代碼中,因爲我在我的手機沒有代碼標籤)看起來像這樣: Invoke-Restmethod -uri'http://bla/api'-credential(獲得憑據)

+0

嗨,我不使用Invoke-Webrequest這樣的commandlets的主要原因是我不知道如何做到這一點 - 我正在通過Google搜索學習。我實際上已經嘗試了Invoke-Webrequest(和其他幾個commandlets,但還沒有成功)。我試圖在這裏實現的是一個控制檯應用程序,它將從一系列列表中檢索文檔(通過只有端口80打開的防火牆),但步驟1是找出Sharepoint服務器上的列表 - 因此,試驗其餘的api來檢索信息。我到目前爲止的問題是程序認證。 –