我使用以下從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'!'' –
幾乎就在那裏。但是現在它會根據管理員的數量在同一行中生成所需的輸出。例如。如果有4個管理員,輸出是(>添加只是爲了更清楚強調) > server1.loc.mydomain.com!Administrator!JohnDoe!Support!Domain Administrators > server1.loc.mydomain.com!Administrator !JOHNDOE!支持!域管理員 > server1.loc.mydomain.com!管理員!JOHNDOE!支持!域管理員 > server1.loc.mydomain.com!管理員!JOHNDOE!支持!域管理員 – valdroni
刪除整個' foreach(){}'循環,只需執行一次 –