到目前爲止,我有下面的腳本,它像一個魅力一樣工作,但只列出組「管理員」的成員。由於我的服務器可能是德語,法語......我不能保證這樣的小組會與英文單詞一起存在。所以我想修改它收集所有組和相關成員,而不是隻有管理員......無賴我上的一個具體步驟獲取所有本地成員和組一起顯示
下面列表中的腳本,在非空的本地組的所有用戶stucked。不過,我希望在我的CSV中也獲得用戶所屬組的名稱,以獲得更清晰的解釋。
有人可以幫助我嗎?我有點困惑,什麼也沒有。
$Servers=Get-Content ListOfComputers.txt
$output = 'ListOfLocalAdministratorsGroup.csv'
$results = @()
foreach($server in $Servers)
{
$admins = @()
$computer =[ADSI]"WinNT://$server"
$computer.psbase.children | where { $_.psbase.schemaClassName -eq 'group' } | foreach {
$group =[ADSI]$_.psbase.Path
$members = @($group.psbase.Invoke("Members"))
$members | foreach {
$obj = new-object psobject -Property @{
Server = $Server
Admin = $_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)
}
$admins += $obj
}}
$results += $admins
}
$results| Export-csv $Output -NoTypeInformation
你好Trondh, 對不起,我在此期間,編輯,因爲我修改了劇本,並幾乎得到它的工作。 我會嘗試你的解決方案,讓你知道! :) – Wawa41
Trondh,我試過你的答案,但我得到「組名無法找到」與Invoke方法的錯誤。 – Wawa41
這種方式: $ objSID = New-Object System.Security.Principal.SecurityIdentifier(「S-1-5-32-544」) $ objgroup = $ objSID.Translate([System.Security.Principal.NTAccount] ) $ objgroupname = $ objgroup.Value 的foreach(在$ $服務器服務器) { $管理員= @() $組= [ADSI] 「WINNT:// $服務器/ $ objgroupname」 $成員= @($ group.psbase.Invoke(「Members」)) – Wawa41