Sharepoint 如何在powershell中拥有20000个网站集的服务器场中高效获取spsite
我试图看看我是否有一些网站符合我的标准。首先我需要找到计数,然后打印一些属性 但是,对于csv文件中的每一行,此查询需要10分钟。我想知道是否有更快的方法Sharepoint 如何在powershell中拥有20000个网站集的服务器场中高效获取spsite,sharepoint,powershell,sharepoint-2010,sharepoint-2013,Sharepoint,Powershell,Sharepoint 2010,Sharepoint 2013,我试图看看我是否有一些网站符合我的标准。首先我需要找到计数,然后打印一些属性 但是,对于csv文件中的每一行,此查询需要10分钟。我想知道是否有更快的方法 $clientcode = @() $ProspectClientCode = @() Import-Csv C:\Users\usern\Downloads\user.csv |` ForEach-Object { $clientcode = $_.clientcode
$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"]}
}
对于每个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
}
你能给我解释一下这些行的语法吗:$clientCode=@{n='clientCode';e={$\u0.RootWeb.AllProperties[“clientCode”]}这让我很困惑!我创建哈希表并将其分配给一个变量,然后您可以将该变量传递给select-object cmdlet,而不是内联编写这些内容。这只是写同样东西的另一种方式,但更具可读性。