我想看看我的某些网站是否符合我的标准。首先,我需要找到计数,然后打印一些属性
但是,对于csv文件中的每一行,此查询都需要10分钟。我想知道是否有更快的方法来做到这一点。
$clientcode = @()
$ProspectClientCode = @()
Import-Csv C:\Users\usern\Downloads\user.csv |`
ForEach-Object {
$clientcode = $_.clientcode
$ProspectClientCode = $_.ProspectClientCode
Write-Host "Processing ClientCode: " + $_.clientcode + ", Prospect Code: " + $_.ProspectClientCode
$count = (Get-SPSite -Limit All | where { $_.RootWeb.AllProperties["ClientCode"] -eq $clientCode -or $_.RootWeb.AllProperties["ClientCode"] -eq $ProspectClientCode}).Count
Write-Host "Sites found: " + $count
Get-SPSite -Limit All | where { $_.RootWeb.AllProperties["ClientCode"] -eq $clientCode -or $_.RootWeb.AllProperties["ClientCode"] -eq $ProspectClientCode} | select Url, {$_.RootWeb.Created}, {$_.RootWeb.AllProperties["ClientCode"]}, {$_.RootWeb.AllProperties["ClientName"]} , {$_.RootWeb.AllProperties["ClientSiteCode"]}
}
答案 0 :(得分:2)
每个csv条目都会获得两次所有网站。我首先尝试获取所有站点,将其分配给变量,然后在循环内过滤它。也就是说,可能有更好的方法在服务器端获得过滤查询,但我不知道是否有办法。
$sites = Get-SPSite -Limit All
Import-Csv C:\Users\usern\Downloads\user.csv | ForEach-Object {
$clientcode = $_.ClientCode
$ProspectClientCode = $_.ProspectClientCode
$created = @{n='Created';e={$_.RootWeb.Created}}
$clientCode = @{n='ClientCode ';e={$_.RootWeb.AllProperties["ClientCode"]}}
$clientName = @{n='ClientName ';e={$_.RootWeb.AllProperties["ClientName"]}}
$clientSiteCode = @{n='ClientSiteCode';e={$_.RootWeb.AllProperties["ClientSiteCode"]}}
$sites |
where { $_.RootWeb.AllProperties["ClientCode"] -eq $ClientCode -or $_.RootWeb.AllProperties["ClientCode"] -eq $ProspectClientCode} |
select Url,$created,$clientCode,$clientName,$clientSiteCode
}