このパワー シェル スクリプトで問題が発生し、スクリプトがシステム上のローカル アカウントのみを参照するようになりました。書かれているように、すべてのコンピューターの AD をポーリングするため、AD に負担がかかりすぎます。Get-Wmiobject に -Filter "LocalAccount='$True' を追加する必要があると思いますが、適切な場所に配置できないようです。支援やアドバイスをいただければ幸いです。また、このスクリプトは実際には 2 回作業を行っていると思います。 csv出力を生成するには、何か提案はありますか?
$Computers = Get-QADComputer -SizeLimit 0 | select -Expand name
}
function Get-Admins {
Foreach ($Computer in $Computers){
$Online = Test-Connection -ComputerName $Computer -Quiet
if ($Online -eq "True"){
$GroupName = Get-WmiObject win32_group -ComputerName $Computer | ? {$_.SID -eq 'S- 1-5-32-544'} | Select-Object name -ExpandProperty name
$LocalGroup =[ADSI]"WinNT://$Computer/$GroupName"
$GroupMembers = @($LocalGroup.psbase.Invoke("Members"))
$Members = $GroupMembers | foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}
foreach ($Member in $Members){
$obj = New-Object System.Object
$obj | Add-Member -MemberType NoteProperty -Name "Computer" -Value $Computer
$obj | Add-Member -MemberType NoteProperty -Name "Local Admin" -Value $Member
$obj
}
}
}
}
Get-Admins | group { $_.Computer } | ForEach-Object {
$computer = @($_.Group | Select-Object -Expand Computer)[0]
$admins = ($_.Group | Select-Object -Expand "Local Admin") -join ','
'{0},{1}' -f $computer, $admins
} | Out-File 'c:\scripts\CSV_Admin_export.csv'