我想运行一个简单的脚本,该脚本显示Active Directory中的所有特权用户。我已经接近了,但是语法不太正确。我认为代码很容易解释:
'Domain Admins', 'Administrators', 'Enterprise Admins', 'Schema Admins', 'Server Operators', 'Backup Operators' |
ForEach-Object {$groupName = $_ Get-ADGroupMember -Identity $_ -Recursive |
Get-ADUser | Select-Object Name, DisplayName, @{n='GroupName';e={ $groupName }}}
在PowerShell ISE中,它强调了Get-ADGroupMember并指出:“表达式或语句中出现意外的标记'Get-ADGroupMember'。”
我在做什么错了?
预先感谢
-吉姆
附录-我忽略但又未在问题中提出的另一个问题:Get-ADUser似乎没有返回DisplayName属性,因此我们必须明确要求它:
'Domain Admins', 'Administrators', 'Enterprise Admins', 'Schema Admins', 'Server Operators', 'Backup Operators' |
ForEach-Object {$groupName = $_; Get-ADGroupMember -Identity $_ -Recursive | Get-ADUser -Properties Name, DisplayName |
Select-Object Name, DisplayName, @{n='GroupName';e={ $groupName }}}
答案 0 :(得分:3)
您忘记了用分号作为语句分隔符:
'Domain Admins', 'Administrators', 'Enterprise Admins', 'Schema Admins', 'Server Operators', 'Backup Operators' |
ForEach-Object {$groupName = $_; Get-ADGroupMember -Identity $_ -Recursive |
Get-ADUser | Select-Object Name, DisplayName, @{n='GroupName';e={ $groupName }}}
请注意$groupname = $_
之后的分号。当您在脚本块中组合多个语句并且不使用换行符将它们分开时,您需要使用分号来分隔它们。