SharePoint 2010
Add-PSSnapin "Microsoft.SharePoint.PowerShell" ### GLOBAL VARS, CHANGE HERE $listname = "Pages" $url = "http://localhost" function approveContent ($w, $listName) { $list = $w.Lists |? {$_.Title -eq $listName} foreach ($item in $list.Items) { if(($item -ne $null) -and ($item.LockId -ne $null)) { $item.ReleaseLock($item.LockId) } if( $item.File -ne $null) { $itemFile = $list.GetItemById($item.ID).File } else { $itemFile = $list.GetItemById($item.ID) } if( $itemFile.CheckOutStatus -ne "None" ) { $itemFile.CheckIn("Automatic CheckIn. (Administrator)") if( $item.File -ne $null) { $itemFile = $list.GetItemById($item.ID).File } else { $itemFile = $list.GetItemById($item.ID) } } if( $list.EnableVersioning -and $list.EnableMinorVersions) { $itemFile.Publish("Automatic Publish. (Administrator)") if( $item.File -ne $null) { $itemFile = $list.GetItemById($item.ID).File } else { $itemFile = $list.GetItemById($item.ID) } } if( $list.EnableModeration ) { $itemFile.Approve("Automatic Approve. (Administrator)") } } } $site = Get-SPSite $url foreach ( $web in $site.AllWebs ) { approveContent $web $listname } Write-Output "OK"
For SharePoint 2007, simply replace the first line:
Add-PSSnapin "Microsoft.SharePoint.PowerShell"
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") function Get-SPSite([string]$url) { New-Object Microsoft.SharePoint.SPSite($url) } function Get-SPWeb([string]$url) { $SPSite = Get-SPSite $url return $SPSite.OpenWeb() $SPSite.Dispose() }
No comments:
Post a Comment