Я немного переписал ваш сценарий, используя командлеты SharePoint PnP PowerShell , чтобы сделать то же самое. Я думаю, что я реализовал то, что вы пытаетесь сделать:)
$urls = Get-Content "C:\Users\user.name\Documents\PowershellScripts\sites.txt"
$username = "user.name@xxxx.com"
$encpassword = Read-Host -Prompt "Enter your password: " -AsSecureString
$cred = New-Object -typename System.Management.Automation.PSCredential -argumentlist $username, $encpassword
foreach($url in $urls) {
Connect-PnPOnline -Url $url -Credentials $cred
$rootweb = Get-PnPWeb -Includes Webs
foreach($web in $rootweb.Webs) {
$currentWeb = Get-PnPWeb $web.Id -Includes Lists
foreach($list in $currentWeb.Lists) {
if ($list.ItemCount -gt 5000) {
Write-Host -ForegroundColor Yellow "The site URL is" $currentWeb.Url
Write-Host "List title is: " $list.Title". This list has: " $list.ItemCount " items"
}
}
}
}
Прежде чем вы сможете запустить вышеуказанный сценарий, вам также необходимо установить командлеты SharePoint PnP, что можно сделать, запустив
Install-Module SharePointPnPPowerShellOnline
, если вы используете Windows 10. В других случаях см. на этой странице для получения дополнительной информации.
С помощью приведенного выше кода я хочу проиллюстрировать, как вы можете написать ту же вещь короче, используя более высокоуровневые командлеты.
Командлеты SharePoint PnP PowerShell - это командлеты, созданные сообществом SharePoint PnP и распространяемые бесплатно.