下面的当前脚本可以工作,但它会在一行中显示成员。我希望每个成员表格式有一行。
$script = {
$groups = Get-CimInstance win32_group -filter "domain='$($env:computername)'"
foreach ($group in $groups) {
Get-CimInstance win32_groupuser -filter "GroupComponent=""Win32_Group.Domain='$($env:computername)',Name='$($group.Name)'"""
}
}
$output = Invoke-Command -ComputerName $servers.Name -ScriptBlock $script -ErrorAction SilentlyContinue
$output | Group PSComputerName,GroupComponent | Foreach-Object {
[pscustomobject]@{
Server = $_.Group[0].PSComputerName
Group = $_.Group[0].GroupComponent.Name
Members = $_.Group.PartComponent.Name -join '|'
}
} | Export-Csv "C:\Users\someuser\Documents\PowerShell\AccessOutput5.csv" -NoType
结果如下
"DummyServer","Administrators","Wintel4OPS|LocalIs|Domain Admins|Win_EP_Accounts|Win_EP_Admin_USA|Win_EP_Eng|Win_EP_Delivery_Svc"
"DummyServer","Backup Operators","MSSQLSERVER"
"DummyServer","Event Log Readers","NETWORK SERVICE"
"DummyServer","Guests","UHT-Guest"
"DummyServer","IIS_IUSRS","IUSR"
"DummyServer","Performance Log Users","jdoe"
"DummyServer","Performance Monitor Users","MSSQLSERVER|SQLSERVERAGENT"
"DummyServer","Users","INTERACTIVE|Authenticated Users|Domain Users|CLIUSR"
"DummyServer","Guardium Services","LOCAL SERVICE"
"DummyServer","SQLServer2005SQLBrowserUser$DummyServer","SQLBrowser"
"DummyServer","SQLServerHADRUser$MSSQLSERVER","MSSQLSERVER"
当您有200+服务器时,这是很难理解的。如何更改当前脚本,以便每个成员服务器名称和组都有一行重复,这很好。
期望输出
"DummyServer","Administrators","Wintel4OPS"
"DummyServer","Administrators","LocalIs"
"DummyServer","Administrators","Domain"
发布于 2022-08-08 16:20:22
与其用member
字符连接每个|
,不如为$_.Group.PartComponent.Name
中的每个对象运行一个foreach
循环。
$output | Group PSComputerName,GroupComponent | Foreach-Object {
foreach ($member in $_.Group.PartComponent.Name)
{
[pscustomobject]@{
Server = $_.Group[0].PSComputerName
Group = $_.Group[0].GroupComponent.Name
Members = $member
}
}
} | Export-Csv "C:\Users\someuser\Documents\PowerShell\AccessOutput5.csv" -NoType
https://stackoverflow.com/questions/73277214
复制相似问题