0

我正在尝试查看某些网站是否符合我的标准。首先我需要找到计数,然后打印一些属性

但是,对于 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"]}
        }
4

1 回答 1

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 
}
于 2013-08-23T10:54:39.363 回答