私は、http://iislogs.com/steveschofield/2009/01/09/list-local-administrators-on-a-machine-using-powershell-adsi/の次のPowershellを使用して、PCと内部ネットワークのサーバーで構成されたローカルおよびドメイン管理アカウントを抽出しています。ネットワーク上のローカル管理者を一覧表示するPowershell
PowerShellスクリプトは以下の通りです:実行すると
はfunction LogToFile ([string]$strFileName, [string]$strComputer)
{
Add-Content $strFileName $strComputer
}
$strComputer = “server1.loc.mydomain.com”
$computer = [ADSI](“WinNT://” + $strComputer + “,computer”)
$Group = $computer.psbase.children.find(“Administrators”)
$members= $Group.psbase.invoke(“Members”) | %{$_.GetType().InvokeMember(“Name”, ‘GetProperty’, $null, $_, $null)}
ForEach($user in $members)
{
Write-Host $user
$a = $strComputer + “!” + $user.ToString()
LogToFile “C:\local-admins.txt” $a
}
、それは次の形式でtxtファイルに結果を生成します。
server1.loc.mydomain.com!Administrator
server1.loc.mydomain.com!JohnDoe
server1.loc.mydomain.com!Support
server1.loc.mydomain.com!Domain Administrators
- 誰かがTXTに出力を変更するために私を助けることができる
結果は次の形式で表示されます。
server1.loc.mydomain.com!Administrator!JohnDoe!Support!Domain Administrators
このように報告された場合、私は簡単にcsvにエクスポートして作業できます。 これは、txtではなく、希望の形式でCSV形式でエクスポートするように変換できれば、すばらしいことです。
- 6行目のコードをどのようにするかserver1、server2、.... server38 ...という名前のサブネット全体をスキャンする場合は、手動で各マシンの行を変更する必要はありません。私はサーバ*、サーバ[*]を試しました。それは私にエラーを与えます。
私はPSの完全な初心者ですが、私のニーズに対応するために物事をまとめようとしており、必要な助けを私に提供してくれることを願っています。
ありがとうございました。
$a = @($strComputer;$members) -join '!'
LogToFile "C:\local-admins.txt" $a
範囲演算子を使用し、自分の名前で連続した数字でサーバのリストを生成するには:だけに下部にforeach()
ループを変更、1行ですべてのアカウントを持っているために、出力を変更するには
'$ a = @($ strComputer; $ members)-join '!'' –
ほとんどあります。しかし、管理者の数に応じて同じ行に出力されるようになりました。例えば。管理者が4人いる場合、出力は(より>が強調されている場合のみ) > server1.loc.mydomain.com!管理者!JohnDoe!サポート!ドメイン管理者 > server1.loc.mydomain.com!管理者!JohnDoe!サポート!ドメイン管理者 > server1.loc.mydomain.com!管理者!JohnDoe!サポート!ドメイン管理者 > server1.loc.mydomain.com!管理者!JohnDoe!サポート!ドメイン管理者 – valdroni
全体の ' foreach(){} 'ループ、一度やり直してください –