小编myr*_*ack的帖子

在PowerShell 5.0中打印本地组成员

我使用以下代码来确定本地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中打印本地组的成员?

powershell adsi active-directory windows-10 powershell-5.0

9
推荐指数
2
解决办法
4393
查看次数