2013-08-20 114 views
3

有網上如何訪問/使用SharePoint客戶端對象模型PowerShell的例子很多。但是,當然,他們似乎不適合我。我似乎無法訪問某些憑據代碼:使用SharePoint CSOM使用PowerShell

PS C:\Scripts> $webUrl = "https://abc.sharepoint.com>" 
PS C:\Scripts> $username = "user3" 
PS C:\Scripts> $password = "password" 
PS C:\Scripts> 
PS C:\Scripts> $ctx = new-object Microsoft.SharePoint.Client.ClientContext($webUrl) 
PS C:\Scripts> $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password) 
New-Object : Cannot find type Microsoft.SharePoint.Client.SharePointOnlineCredentials]: make sure the assembly containing this type is loaded. 
At line:1 char:30 
+ $ctx.Credentials = New-Object <<<< Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password) 
    + CategoryInfo   : InvalidType: (:) [New-Object], PSArgumentException 
    + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand 

我試圖訪問我們維護的SharePoint 2010服務器,它需要登錄身份驗證。有誰知道我做錯了什麼?

OK,這麼多的反應告訴我,我使用此連接不正確的資格認證類型。所以我改成:

$clientContext = New-Object Microsoft.SharePoint.Client.ClientContext($url) 
$clientContext.AuthenticationMode = "FormsAuthentication" 
$clientContext.FormsAuthenticationLoginInfo = New-Object Microsoft.SharePoint.Client.FormsAuthenticationLoginInfo("myDomain\myUser", "myPassword") 

這似乎工作正常。但後來......

$web = $clientContext.Web 
$properties = $web.AllProperties 
$clientContext.Load($web) 

給我:

> Cannot find an overload for "Load" and the argument count: "1". At 
> line:1 char:20 
> + $clientContext.Load <<<< ($web) 
>  + CategoryInfo   : NotSpecified: (:) [], MethodException 
>  + FullyQualifiedErrorId : MethodCountCouldNotFindBest 

,當我嘗試看看$ clientContent對象:

PS C:\Scripts> $clientContent | get-member 
Get-Member : No object has been specified to the get-member cmdlet. 
At line:1 char:28 
+ $clientContent | get-member <<<< 
    + CategoryInfo   : CloseError: (:) [Get-Member], InvalidOperationException 
    + FullyQualifiedErrorId : NoObjectInGetMember,Microsoft.PowerShell.Commands.GetMemberCommand 

這是沒有意義的。任何人有任何幫助?

+0

謝謝大家。儘管我們使用表單/聲明身份驗證,但我嘗試了所有這些方法,但仍然沒有工作。無論我嘗試什麼,這都是我得到的: PS C:\ Scripts> $ clientContext。負載($ web) 找不到「負載」過載和參數計數:「1」。 在行:1個字符:20 + $ clientContext.Load <<<<($網) + CategoryInfo:NotSpecified:(:) [],MethodException + FullyQualifiedErrorId:MethodCountCouldNotFindBest –

回答

3

SharePointOnlineCredentials用於認證到Office365/2013的SharePoint Online服務。如果您沒有託管的2013實例,那麼PS找不到該類型並不意外。

如果你工作在你自己的域名保持在服務器上,您使用的是Windows身份驗證,您的上下文將拿起您現有的安全令牌。

如果你正在做的形式或基於聲明的身份驗證,你必須告訴你的背景:

$ctx.AuthenticationMode = "FormsAuthentication" 
$ctx.FormsAuthenticationLoginInfo = New-Object Microsoft.SharePoint.Client.FormsAuthenticationLoginInfo("domain\username", "password") 

,如果你需要輸入其他憑據還有一個ClientContext.Credentials屬性。

4

這是爲我工作的SharePoint在線

$siteUrl = 「https://URL.sharepoint.com」 
$password = Read-Host -Prompt "Enter password" -AsSecureString 
$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl) 
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials(
                  "[email protected]" 
                  , $password) 

$ctx.Credentials = $credentials 

$web = $ctx.Web 
$ctx.Load($web) 
$ctx.ExecuteQuery() 
0

我使用的是對成功在SharePoint 2013上安裝的前提下。這與你的例子有點不同,因爲提示作爲憑證 - 但我認爲這通常比在腳本中輸入密碼更好。

$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($url) 
$credentials = Get-Credential 
$ctx.Credentials = $credentials 
... 
+0

我終於準備再次嘗試。我已經更新了我的方法並使用了一些此回覆: PS C:\ Scripts> AddCSOM PS C:\ Scripts> $ context = New-Object SharepointClient.PSClientContext(「http:// siteCollection」) PS C :\ Scripts> $ credentials = Get-Credential#在這裏提示我提供我的域\用戶名和密碼 PS C:\ Scripts> $ context.Credentials = $ credentials PS C:\ Scripts> $ context.ExecuteQuery ) 使用「0」參數調用「ExecuteQuery」異常:「遠程服務器返回錯誤:(403)禁止。」 –

+0

我終於準備好再試一次。我已經更新了我的方法並使用了一些回覆: > PS C:\ Scripts> AddCSOM > PS C:\ Scripts> $ context = New-Object SharepointClient.PSClientContext(「http:// siteCollection」) > PS C:\ Scripts> $ credentials = Get-Credential#在這裏提示我提供了我的域\用戶名和密碼 > PS C:\ Scripts> $ context.Credentials = $ credentials > PS C:\ Scripts> $ context.ExecuteQuery() >調用帶有「0」參數的「ExecuteQuery」的異常:「遠程服務器返回錯誤:(403)禁止。」 現在是什麼? –

2

在你的PowerShell腳本的開頭,指定完整路徑你需要這樣的CSOM的DLL:

Add-Type -path 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll' 
Add-Type -path 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll' 

能解決403錯誤我。如果我使用環境變量作爲路徑的一部分加載dll,它不能在我的服務器上運行,但在我的工作站上運行。

相關問題