I have a strange situation with this PowerShell function. It is supposed to return an ArrayList object, but if the loop adds only 1 element to an ArrayList, the function returns an SPList element instead of an Expected ArrayList object. I am focused on why PowerShell behaves this way.
function Get-ContentOrganizerRules ( [System.String]$siteUrl = "http://some.sharepoint.url" ) { Write-Host -ForegroundColor Gray "Searching for Content Organizer Rules: " $siteUrl # ArrayList to hold any found DataConn Libs [System.Collections.ArrayList]$CORules = New-Object System.Collections.ArrayList($null) $lists = Get-SPWeb $siteUrl | Select -ExpandProperty Lists | Where { $_.GetType().Name -eq "SPList" -and $_.hidden } foreach($list in $lists) { #Write-Host $list ; foreach($contenType in $list.ContentTypes){ if($contenType -ne $null){ if($contenType.Id.ToString() -eq "0x0100DC2417D125A4489CA59DCC70E3F152B2000C65439F6CABB14AB9C55083A32BCE9C" -and $contenType.Name -eq "Rule") { $CORules.Add($list)>$null; Write-Host -BackgroundColor Green -ForegroundColor White "Content Organizer Rule found: " $list.Url>$null; } } } } return $CORules; }
This is the call code:
$CORulesResults = Get-ContentOrganizerRules $web.URL; if($CORulesResults.Count -gt 0){ $Results.AddRange($CORulesResults); }
source share