2014-05-22 63 views
0

我想在Powershell中使用ByPassLock方法更新Sharepoint 2010記錄。
我使用下面的代碼在Powershell中使用Bypasslock方法更新記錄時出錯

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") | Out-Null 
    [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.RecordsManagement.RecordsRepository.Records") 
    [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Publishing") 
    $modDate = { 
     param(
      [Microsoft.SharePoint.SPListItem]$a 
    ) 
     $a["Title"] = "NewTitle" 
     $a.SystemUpdate($true) 
    } 
    $web = Get-SPWeb "http://mySiteCollection/" 
    $item = $web.Lists["Dokument"].GetItemById(10) 
    [Microsoft.Office.RecordsManagement.RecordsRepository.Records]::BypassLocks($item,$modDate) 

腳本,我得到下面的錯誤執行後

異常調用「BypassLocks」與「2」參數(S):「試圖執行未經授權的操作。 「
+ Microsoft.Office.RecordsManagement.RecordsRepository.Records] :: BypassLocks < < < <($項目,$創建ModDate)
+ CategoryInfo:NotSpecified:(:) [],MethodInvocationException
+ FullyQualifiedErrorId:DotNetMethodException



我以管理員身份運行此腳本並在網站上擁有網站集管理員訪問權限。我刪除了項目更新部分,但仍然無法正常工作。
有人能幫我解決這個問題

回答

0

當我在系統帳戶的令牌下執行網站集時,它工作。

#Get Systrem User ID 
    $sysId = $web.Site.SystemAccount.ID 
    $sysuser = $web.AllUsers[$sysId] 
    $token = $sysuser.Token 

    #Create New Site Object under Token of System Account for the Site Collection 
    $newSiteObject = New-Object Microsoft.SharePoint.SPSite($web.Url, $token) 
    $newWebObject = $newSiteObject .OpenWeb() 
    $item = $newWebObject.GetListItem($fileurl)   
    [Microsoft.Office.RecordsManagement.RecordsRepository.Records]::BypassLocks($item, $byPassMethodName)