空SharePointのリサイクルBin
-
09-12-2019 - |
質問
当社のSharePoint2007年に設置してparticularily大きな第一段階にゴミ箱です。書いて、PowerShellスクリプトを削除する古います。楽しい、それを掲載します。
UPDATE2:
ま42,500,000+ごみ箱の中のデータテーブルのコンテンツデータベース!!
きっかけになるかもしれないとしてBDLC仕事をする予定でしたがその前に行ってきましたが、ポンプなデータのRecycleBinテーブルでSharePointできない管理するとともに適切なタイミングです。弊社では予定のスクリプトで除去のデータ1000件毎30分までとなります。い算引き算など余計な計算は、その思いだった。多くの記録ができないもの執行枠なしSharePointのタイミングです。このようにして凍結を削除する記録にBDLC
UPDATE1: 私は実は私のPowerShellスクリプトを削除各項目からSQLプロファイラを見出 proc_DeleteRecycleBinItem が実施されている接する複数のテーブルで私たちが発展していくためには貼り付予定のPowerShellスクリプトの走行/ポN分です。
ま38,500,000+ごみ箱の中のデータテーブルのコンテンツデータベース!!
ここでは膨大なっていまBDLCによるLayer2同期データからその他のシステムでのリサイクルが削除されます。また、とても大きいものをネイティブプタイマジョブを管理できない時出---
思いがショットのSharePointがマフィアに牛耳ったことが---でも削除された行から実際の RecycleBin
テーブル、ドコンテンツデータベース?我々は15430792KB(14.7GB).
う意識がマイクロソフト株式会社ポ変更があった場合には、コンテンツデータベースです。いるとしています。もちろんでいる。この問題は明確に:でっか...
私は単に見たような方の清掃、ゴミ箱です。きっとスクリプトの下であって確立を目指している一部のmaintainenceます。の便のように大がかかるという永遠のためのスクリプトを走りますが、多くのデータです。
当社のユーザーデータが実際に203790168KB(194.3GB)と書いたPSのスクリプトに大型のファイルで管理するサイズです。ること、また下記に従事する全ての人にエーテル.
また、BDLC(w/第3者ツールからLayer2)同期のデータラSQL.私は知識を深このジョブを削除でに多くのデータを定期的にRecycleBinテーブル。
くのではないでしょうか答えを自分の問題が...何かしてもらいました。予定タスクのmaintainceスクリプトしかし、私は書き...う~ん...
function RemoveOldItems-SPFirstStageRecycleBin([string]$url, [int]$rowlimit, [int]$days)
{
$siteCollection = New-Object Microsoft.SharePoint.SPSite($url);
$recycleQuery = New-Object Microsoft.SharePoint.SPRecycleBinQuery;
$recycleQuery.ItemState = [Microsoft.SharePoint.SPRecycleBinItemState]::FirstStageRecycleBin
$recycleQuery.OrderBy = [Microsoft.SharePoint.SPRecycleBinOrderBy]::DeletedDate
$recycleQuery.RowLimit = $rowlimit
$recycledItems = $siteCollection.GetRecycleBinItems($recycleQuery);
$count = $recycledItems.Count;
for($i = 0; $i -lt $count; $i++){
$age = ((Get-Date) - $recycledItems[$i].DeletedDate).Days;
if($age -gt $days){
$g = New-Object System.Guid($recycledItems[$i].ID);
$recycledItems.Delete($g);
}
}
$siteCollection.Dispose()
}
function Get-DocInventory() {
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$farm = [Microsoft.SharePoint.Administration.SPFarm]::Local
foreach ($spService in $farm.Services) {
if (!($spService -is [Microsoft.SharePoint.Administration.SPWebService])) {
continue;
}
foreach ($webApp in $spService.WebApplications) {
if ($webApp -is [Microsoft.SharePoint.Administration.SPAdministrationWebApplication]) { continue }
foreach ($site in $webApp.Sites) {
foreach ($web in $site.AllWebs) {
foreach ($list in $web.Lists) {
if ($list.BaseType -ne "DocumentLibrary") {
continue
}
foreach ($item in $list.Items) {
$data = @{
"Web Application" = $webApp.ToString()
"Site" = $site.Url
"Web" = $web.Url
"list" = $list.Title
"Item ID" = $item.ID
"Item URL" = $item.Url
"Item Title" = $item.Title
"Item Created" = $item["Created"]
"Item Modified" = $item["Modified"]
"Size (kb)" = $item.File.Length/1KB
"Size (gb)" = $item.File.Length/1GB
}
Write-Host $item.Url -ForegroundColor DarkGray
# Only add files larger than 100 MB
if($item.File.Length -gt 100MB){
Write-Host $site.Url + $item.Url -ForegroundColor Red
New-Object PSObject -Property $data
}
}
}
$web.Dispose();
}
$site.Dispose()
}
}
}
}
#Get-DocInventory | Out-GridView
Get-DocInventory | Export-Csv -NoTypeInformation -Path D:\Logs\inventory.csv
$jobName = "Get Large Lists"
function Get-LargeLists() {
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
#create stop watch
[System.Diagnostics.Stopwatch] $sw;
$sw = New-Object System.Diagnostics.Stopwatch
$sw.Start()
$lists = @()
$reportSiteUrl = "http://my-site.gov/sites/applications/reporting/"
$reportListUrl = $reportSiteUrl + "Lists/Large%20Lists/"
$farm = [Microsoft.SharePoint.Administration.SPFarm]::Local
foreach ($spService in $farm.Services) {
if (!($spService -is [Microsoft.SharePoint.Administration.SPWebService])) {continue}
foreach ($webApp in $spService.WebApplications) {
if ($webApp -is [Microsoft.SharePoint.Administration.SPAdministrationWebApplication]) {continue}
foreach ($site in $webApp.Sites) {
foreach ($web in $site.AllWebs) {
foreach ($list in $web.Lists) {
# only add items that have 1000 items or more
if($list.ItemCount -le 99){continue}
# create new object
$o = New-Object Object
Add-Member -InputObject $o -MemberType NoteProperty -Name SiteCollectionUrl -Value $list.ParentWeb.Site.RootWeb.Url
Add-Member -InputObject $o -MemberType NoteProperty -Name ListURL -Value ($list.ParentWeb.Url + "/" + $list.RootFolder.Url)
Add-Member -InputObject $o -MemberType NoteProperty -Name Title -Value $list.Title
Add-Member -InputObject $o -MemberType NoteProperty -Name Description -Value $list.Description
Add-Member -InputObject $o -MemberType NoteProperty -Name ItemCount -Value $list.ItemCount
# add object to $list global array
$lists += $o
}
$web.Dispose()
}
$site.Dispose()
}
}
}
#export array to csv
$lists | Export-Csv D:\Logs\large_lists.csv -NoTypeInformation -Force
#connect to SharePoint Site and List
$s = New-Object Microsoft.SharePoint.SPSite($reportSiteUrl)
$w = $s.openweb()
$l = $w.GetList($reportListUrl)
#clear SharePoint List
$query = New-Object Microsoft.SharePoint.SPQuery
$query.ViewAttributes = "Scope='Recursive'"
$query.Query = ""
$items = $l.GetItems($query)
$items | % { $l.GetItemById($_.Id).Delete() }
#export to SharePoint List
$lists | ForEach{
$item = $l.Items.Add()
$item["Title"] = $_.Title
$item["SiteCollectionUrl"] = $_.SiteCollectionUrl
$u = New-Object Microsoft.SharePoint.SPFieldUrlValue
$u.Description = "Link"
$u.Url = $_.ListURL
$item["URL"] = $u
$item["Description"] = $_.Description
$item["Count"] = $_.ItemCount
$item.Update()
}
$w.Dispose()
$s.Dispose()
#stop timer and log event
$sw.Stop()
C:\_scripts\sp_log.ps1 -jobName $jobName -message "Reported large lists on SharePoint Farm." -type "Success" -duration $sw.Elapsed.Seconds -linkTitle "Link" -linkUrl "http://my-site.gov/sites/applications/reporting/Lists/Large%20Lists/"
}
#catch exceptions
trap [Exception]{
C:\_scripts\sp_log.ps1 -jobName $jobName -message $_.Exception.Message -type "Error" -duration $sw.Elapsed.Seconds -linkTitle "Link" -linkUrl "http://my-site.gov/sites/applications/reporting/Lists/Large%20Lists/"
}
Get-LargeLists
解決
PowerShellスクリプトを実行して各項目を削除し、SQLプロファイラを実行し、 proc_deleterecyclebinitem を実行していますが、実行中のPowerShellスクリプトにスティック/レポートを実行する予定です。n分ごと。