我使用以下代码来确定本地Administrators组的成员:
$obj_group = [ADSI]"WinNT://localhost/Administrators,group"
$members=@($obj_group.Invoke("Members"))|foreach{$_.GetType().InvokeMember("Name","GetProperty",$null,$_,$null)}
Write-Output "Current local Administrators: $members"
Run Code Online (Sandbox Code Playgroud)
此代码适用于PowerShell 2.0 - 4.0.但是,在使用PowerShell 5.0的Windows 10计算机上,它会中断.对于作为本地Administrators组成员的每个本地帐户,它将引发以下错误:
Error while invoking GetType. Could not find member.
At line:2 char:54
+ ... "))|foreach{$_.GetType().InvokeMember("Name","GetProperty",$null,$_,$ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], MissingMemberException
+ FullyQualifiedErrorId : System.MissingMemberException
Run Code Online (Sandbox Code Playgroud)
对于属于Administrators成员的域帐户,不会生成任何错误.
令我困惑的是GetType()对象的成员(我手工追踪命令),所以我不确定为什么它会出错.
我查看了PowerShell 5.0的更改日志,但没有看到任何明显可以解释此行为的内容.
为什么会这样?如果有更好的方法在PowerShell 5.0中打印本地组的成员?