我正在運行PowerShell腳本,它從csv文件獲取一些信息,將其存儲在對象數組中,然後根據文件上的內容執行一些操作。它實際上只做一件事:PowerShell腳本性能優化
如果一列有一個AD組,它將爲該組的每個成員複製該行。
事情是我在腳本編程方面真的很新,開始時文件很小,所以一切都很順利。現在我有大量文件,腳本需要數小時才能執行。
$file = "c:\Report.csv"
$fileContent = Import-csv $file | select *, UserName
foreach($item in $fileContent)
{
$LoginName = $item.LoginName
$LoginNameClean = $LoginName.split("\")
$LoginNameClean = $LoginNameClean[1].trimstart("_")
$ObjectClass = (Get-ADObject -filter {SamAccountName -eq $LoginNameClean}).ObjectClass
$UserName = $null
if($ObjectClass -eq "user")
{
$UserName = Get-ADUser -identity $LoginNameClean -properties DisplayName
if($UserName)
{
$item.UserName = $UserName.DisplayName
}
}
elseif($ObjectClass -eq "group")
{
$GroupUsers = Get-ADGroupMember -identity $LoginNameClean -Recursive
foreach($user in $GroupUsers)
{
$UserInsideGroup = Get-ADUser -identity $user -properties DisplayName
$UserInsideGroupName = $UserInsideGroup.DisplayName
$newRow = New-Object PsObject -Property @{"URL" = $item.URL; "SiteListFolderItem" = $item.SiteListFolderItem; "TitleName" = $item.TitleName; "PermissionType" = $item.PermissionType; "LoginName" = $item.LoginName; "Permissions" = $Item.Permissions; "UserName" = $UserInsideGroup.DisplayName;}
$fileContent += $newRow
}
}
}
$fileContent | Export-Csv -NoTypeInformation -Path "c:\ReportUpgraded.csv"
,關於如何提高這種性能的任何提示,非常感謝提前
感謝。
編輯:我使用PS 2.0
正如評論所說,我試圖取代fileContent + = NEWROW。
我試圖使用添加成員,但它給我這個錯誤:
Add-Member : Cannot add a member with the name "URL" because a member with that name already exists. If you wan t to overwrite the member anyway, use the Force parameter to overwrite it. At line:1 char:26 + $fileContent | Add-Member <<<< -MemberType NoteProperty -Name "URL"-Value "teste" + CategoryInfo : InvalidOperation: (@{SiteListFolde...me=; URL=teste}:PSObject) [Add-Member], Inv
alidOperationException + FullyQualifiedErrorId : MemberAlreadyExists,Microsoft.PowerShell.Commands.AddMemberCommand
我如何我用這個正常嗎?添加成員不添加,但替換成員
很好,在片分割數據和並行 – 4c74356b41
我已經這樣做處理它們,但沒錯,我可以做更多的分裂,但它會得到令人困惑。這是加快執行時間的唯一途徑嗎?謝謝 – ranbo
你在哪裏做?至於其他選項,看看這個,大多數時候它可能會對AD做出請求,但除非您並行處理數據,否則無法真正加速AD。 – 4c74356b41