2017-06-12 16 views
0

以下のコマンドをServer 2012で実行しようとしています&これは、ユーザーをAdministratorsユーザーグループから引き出しています。しかし、Server 2008R2では、ドメイン全体から引き離しています。異なるOSでpowershellスクリプトを実行しています

Get-WmiObject -Class Win32_GroupUser ` 
| where{$_.GroupComponent -like "*Administrators*"} ` 
|foreach { 
$data = $_.PartComponent -split "\," 
$data[1].Remove(0,5).Replace('"','') 
} 

答えて

0

win2008R2にはPS 2.0.xしかないということが推測されています。私はこのコマンドでwhere{$_.GroupComponent -like "*Administrators*"}が利用できないと思うので、AD全体をフォールバック(推測)としてクエリします。私はあなたがローカルサーバーまたはドメインを照会したい場合ので、私は両方を入力します理解していなかったあなたの説明から、

(すべてがwin2008R2(PS版2.0.50727)に機能している):

ローカル管理者を照会すると

#get servers by AD OU 
If (!(Get-Module ActiveDirectory)) { 
    Import-Module ActiveDirectory 
} 
function get-localadmins{ 
    [cmdletbinding()] 
    Param(
    [string]$server 
) 
    $group = get-wmiobject win32_group -ComputerName $server -Filter "LocalAccount=True AND SID='S-1-5-32-544'" 
    $query = "GroupComponent = `"Win32_Group.Domain='$($group.domain)'`,Name='$($group.name)'`"" 
    $list = Get-WmiObject win32_groupuser -ComputerName $server -Filter $query 
    $list | %{$_.PartComponent} | % {$_.substring($_.lastindexof("Domain=") + 7).replace("`",Name=`"","\")} 
} 

get-localadmins 'your_server_name' 

あなたの目標は、あなたが使用することができます全体のADを照会する場合:

窓2008 R2 SP1には、それがエラーを生成することができます:System.DirectoryServices.AccountManagement.PrincipalOperationException:エラー(1301)が発生しましたwhグループを列挙する。グループのSIDを解決できませんでした。であなたは、Microsoftが修正プログラムをインストールする必要はあり

https://support.microsoft.com/en-us/help/2830145/sid-s-1-18-1-and-sid-s-1-18-2-cannot-be-mapped-on-windows-based-computers-in-a-domain-environment?wa=wsignin1.0%3Fwa%3Dwsignin1.0

次のコードは、ここから取られました:https://stackoverflow.com/a/8057025/6059896(著者へのすべてのクレジット) - 唯一の私のコーディングスタイルを例に変数の名前を変更しました。

$Recurse = $true 

Add-Type -AssemblyName System.DirectoryServices.AccountManagement 
$context_type = [System.DirectoryServices.AccountManagement.ContextType]::Domain 
$group_principal_identity=[System.DirectoryServices.AccountManagement.GroupPrincipal]::FindByIdentity($ct,'Administrators') 
$group.GetMembers($Recurse) 
関連する問題