我有以下從 csv 讀取并匯出到另一個 csv 的 powershell 腳本。它在基本功能方面起作用。以下腳本當前正在匯出:
| 用戶 |
|---|
| jdoe |
| 價格 |
| 史密斯 |
Add-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue
# csv file name
[parameter(Mandatory=$false)][string]$CsvFilePath = ".\AllSiteCollectionsLocal.csv"
$csvItems = Import-Csv $CsvFilePath
$resultsarray = @()
$firstObject = New-Object PSObject
# iterate lines in csv
foreach($Item in $csvItems)
{
$site = new-object Microsoft.SharePoint.SPSite($Item.SiteCollection)
$web = $site.openweb()
$siteUsers = $web.SiteUsers
Write-Host $Item.SiteCollection -ForegroundColor Green
foreach($user in $siteUsers)
{
Write-Host $user.LoginName
$loginnames = @{
USERS = $user.LoginName
}
$resultsarray = New-Object PSObject -Property $loginnames
}
$web.Dispose()
$site.Dispose()
$resultsarray | export-csv -Path c:\temp\sitesandusers.csv -NoTypeInformation
}
我需要如下匯出。請注意,我什至不需要標題,但確實需要 $Item.SiteCollection 值在每個站點下的每次用戶迭代之間列印出來,因此外部 foreach 需要列印 $Item.SiteCollection 然后內部 foreach 將列印 $user.LoginName
| http://test1.com |
| jdoe |
| 價格 |
| http://test2.com |
| 史密斯 |
uj5u.com熱心網友回復:
我猜你想為你的腳本做引數,以便從其他地方呼叫?到目前為止,您的元資料屬性對于$CsvFilePathPowerShell 已經為您做的事情是多余的。
至于你的問題,你只需要附加$Item.SiteCollection到你的PSObject. 這也不是必需的,因為 PowerShell 流功能允許您直接分配給變數;所以不需要 =-在較大的串列上計算成本可能會降低整體性能。現在我們最終得到:
Param (
[parameter(Mandatory=$false)]
[string]$CsvFilePath = ".\AllSiteCollectionsLocal.csv"
)
Add-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue
$csvItems = Import-Csv $CsvFilePath
$variable = foreach($Item in $csvItems)
{
$site = new-object Microsoft.SharePoint.SPSite($Item.SiteCollection)
$web = $site.openweb()
$siteUsers = $web.SiteUsers
Write-Host -Object $Item.SiteCollection -ForegroundColor Green
Write-Output -InputObject $Item.SiteCollection
foreach($user in $siteUsers)
{
Write-Host -Object $user.LoginName
Write-Output -InputObject $user.LoginName
}
$null = $web.Dispose()
$null = $site.Dispose()
}
$variable | Out-File -FilePath 'c:\temp\sitesandusers.csv'
繞過$variable您可以將輸出直接分配給將匯出放在第一foreach條陳述句之外的檔案。
- 這需要使用子運算式運算子
$()來環繞回圈。 - 還
Param ( )為您的引數宣告添加了一條陳述句。- 沒有弄亂引數屬性,因為它可以顯示作者的意圖,無論是否需要。
可能應該補充一點,Write-Output將顯式寫入成功流,允許將值分配給變數,而Write-Host寫入資訊流,因此不會發生物件污染(重復)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/490721.html
標籤:电源外壳
