我需要在远程机器上获得本地管理员,但只需要显示域用户(具有域\前缀的用户)
$admins = Gwmi win32_groupuser –computer computer
$admins = $admins |? {$_.groupcomponent –like '*"Administrators"'}
$admins |% {
$_.partcomponent –match “.+Domain\=(.+)\,Name\=(.+)$” > $nul
$matches[1].trim('"') + “\” + $matches[2].trim('"')
}
$admins = $admins |? {$_.groupcomponent –like '*"Administrators"'}
GroupComponent : \\COMPUTER\root\cimv2:Win32_Group.Domain="COMPUTER",Name="Administrators"
PartComponent : \\COMPUTER\root\cimv2:Win32_Group.Domain="DOMAIN",Name="Domain Admins"
PSComputerName : COMPUTER电流输出:
计算机管理员
域域管理员
域\User1 1
域\user2 2
我只需要向域用户显示
期望输出:
域域管理员
域\User1 1
域\user2 2
我试过这个:
$admins |% {
$_.partcomponent –match “.+Domain\='DOMAIN\',Name\=(.+)$” > $nul
$matches[1].trim('"') + “\” + $matches[2].trim('"')
} 但是单个用户会被多次显示。
域\User1 1
域\User1 1
域\user1 1
发布于 2020-10-22 06:56:12
弄明白了
$admins |% {
$_.partcomponent –match ".+Domain\=(.+)\,Name\=(.+)$" > $nul
$matches[1].trim('"') + "\" + $matches[2].trim('"') | Where-Object {$_ -like 'DOMAIN*' }
}输出:
DOMAIN\Domain Admins
DOMAIN\user1
DOMAIN\User2发布于 2020-10-21 16:14:51
请不要使用来自TechNet画廊的意大利面代码。
好剧本是一篇写得很好的(英文)散文。
Get-WmiObject Win32_GroupUser –Computer PlaceYourComputerNameHere | <# Now, you have all users #>
Where-Object {$_.GroupComponent –like '*"Administrators"'} | <# Now, you have all Administrators #>
Where-Object { $_.PartComponent –match ".+Domain\=""(.+)"",Name\=(.+)$"} | <# Now, you have all domain administrators and you have created two regex groups by (.+) with index 1 and 2 #>
ForEach-Object {"$($Matches[1])\$($Matches[2])"} <# Now, you concatenated the results from regex matches into a single string #>https://stackoverflow.com/questions/64465298
复制相似问题