web-dev-qa-db-ja.com

Get-LocalGroupMemberは、Administratorsグループのエラーを生成します

次のコマンドは、AzureADに参加しているWindows 10 VM)で実行されます。

PS C:\ Windows\system32> Get-LocalGroupMember -Group Administrators
Get-LocalGroupMember:配列内の2つの要素の比較に失敗しました。行:1文字:1

PS C:\ Windows\system32> Get-LocalGroupMember -Group Users
グループNTAUTHORITY\Authenticationed Users Unknown
グループNTAUTHORITY\INTERACTIVE不明

PS C:\ Windows\system32>ネットローカルグループ管理者
メンバー
管理者AzureAD\UserName

PowerShell Get-LocalGroupMemberコマンドがAdministratorsグループでエラーを生成しているのに、net localgroupがUsersグループのGet-LocalGroupMemberと同じように機能する理由はありますか?

4
munrobasher

これは公式のバグとして参照されています:

https://github.com/PowerShell/PowerShell/issues/2996

回避策は次のとおりです。

http://jdhitsolutions.com/blog/scripting/2342/query-local-administrators-with-cim/

更新:

CIMとWMIにいくつか問題がありました。

これが私にとってどこでもうまくいった別の回避策です。

https://p0w3rsh3ll.wordpress.com/2016/06/14/any-documented-adsi-changes-in-powershell-5-0/

4
Luke

これにより、壊れた管理者がクリーンアップされます。更新プロセス中に作成されたと思います。

(PowerShellスクリプト)

$administrators = @(
([ADSI]"WinNT://./Administrators").psbase.Invoke('Members') |
% { 
 $_.GetType().InvokeMember('AdsPath','GetProperty',$null,$($_),$null) 
}
) -match '^WinNT';

$administrators = $administrators -replace "WinNT://",""

$administrators

foreach ($administrator in $administrators)
{

if ($administrator -like "$env:COMPUTERNAME/*" -or $administrator -like "AzureAd/*")
{
    continue;
}

Remove-LocalGroupMember -group "administrators" -member $administrator
}
0
Monofuse