none
PowerShellにてコンピュータオブジェクトに権限を付与 RRS feed

  • 質問

  • いつもお世話になっております。

    ADのコンピュータオブジェクトに対し、

    セキュリティ権限「Domain Users」を付与したいのですが、

    下記PowerShellを実行すると権限を付与するところで失敗します。

    ---------------------------------------------

    $OUPath    = "OU=test,DC=ad"

    for($i=1;$i -le 2;$i ++)
    {
    $ComputerName = "PCTEST{0:0000}" -f $i
    New-ADComputer -Name $ComputerName -Path $OUPath
    Get-ChildItem|Foreach {dsacls $ComputerName /G ""ad\Users\Domain Users:SDRCLCRPDTLOCA;;"";dsacls $ComputerName /G ""ad\Users\Domain Users:WP;Logon Information;"";dsacls $ComputerName /G ""ad\Users\Domain Users:WP;description;"";dsacls $ComputerName /G ""ad\Users\Domain Users:WP;displayname;"";dsacls $ComputerName /G ""ad\Users\Domain Users:WP;sAMAccountName;"";dsacls $ComputerName /G ""ad\Users\Domain Users:WP;Account Restrictions;"";dsacls $ComputerName /G ""ad\Users\Domain Users:WS;Validated write to DNS host name;"";dsacls $ComputerName /G ""ad\Users\Domain Users:WS;Validated write to service principal name;""}

    }

    ---------------------------------------------

    また下記のアクセス許可を設定したいのですがdsaclsに過不足ございますでしょうか。

    ユーザー:

    Domain Users

    許可:

    ①フルコントロール

    ②DNSホスト名への検証された書き込み

    ③サービスプリンシパル名への検証された書き込み

    ④パスワードのリセット

    ⑤パスワードの変更

    ⑥受信者

    ⑦送信者

    ⑧認証を許可

    ⑨NDSホスト名の属性の読み取り

    ⑩MS-TS-GatewayAccessの読み取り

    ⑪アカウント制限の読み取り

    ⑫アカウント制限の書き込み

    ⑬パブリックインフォメーションの読み取り

    ⑭個人情報の読み取り

    ⑮特殊なアクセス許可(グレーアウト)

    お手数をお掛けしますが、

    よろしくお願いいたします。

    2018年2月9日 4:05

回答

  • チャブーンです。

    一番下から25番目の項目「userAccountControl」

     ・手動で作成:0x1020 =WORKSTATION_TRUST_ACCOUNT | PASSWD_NOTREQD
     ・スクリプトで作成:0x1000 =WORKSTATION_TRUST_ACCOUNT

    手動で作成した場合と同じ設定しにしたいのですが、どうにかなりませんでしょうか。

    userAccountControlはdsacls.exeの動作(アクセス許可の変更)とは無関係です。設定をそうしたい、というなら、コードの14行目(したから2行目)を以下のように変えればいいでしょう。

    $Computers|Foreach {New-ADComputer $_ -PasswordNotRequired $True;$objComputers+=Get-ADComputer $_}
    追記:コードのtypoがあったので、修正しました


    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。


    2018年2月14日 3:18
    モデレータ

すべての返信

  • チャブーンです。

    この件ですが、過去に完全に同じ質問に答えていますね。過去ログがありますので、まずはそちらをご覧になってください。

    https://social.technet.microsoft.com/Forums/ja-JP/d00e3f34-20cc-46f2-9bac-e886d316268b?forum=activedirectoryja

    で、今回の要件に合わせて少しだけ変更したスクリプトが、以下になります。

    Import-Module ActiveDirectory
    
    $Computers=for($i=1;$i -le 2;$i ++) {"PCTEST{0:0000}" -f $i}
    
    # "EXAMPLE\Domain Users"を必要なグループに書き換えます。'NETBIOSドメイン名\グループ名'形式で書かなければいけません。
    $ACLs='"EXAMPLE\Domain Users":SDRCLCRPDTLOCA;; "EXAMPLE\Domain Users":WP;"Logon Information"; "EXAMPLE\Domain Users":WP;"description"; "EXAMPLE\Domain Users":WP;"displayname"; "EXAMPLE\Domain Users":WP;"sAMAccountName"; "EXAMPLE\Domain Users":WP;"Account Restrictions"; "EXAMPLE\Domain Users":WS;"Validated write to DNS host name"; "EXAMPLE\Domain Users":WS;"Validated write to service principal name";'
    
    $objComputers=@()
    
    # "OU=Test,DC=example,DC=com"をコンピューターアカウントを配置するOUに書き換えます。DN形式で書かなければいけません。
    New-PSDrive Test -PSProvider ActiveDirectory -Root "OU=Test,DC=example,DC=com"
    
    Set-Location Test:
    $Computers|Foreach {New-ADComputer $_;$objComputers+=Get-ADComputer $_}
    $objComputers|Foreach {cmd /c dsacls $_ /G $ACLs}


    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。

    2018年2月9日 4:58
    モデレータ
  • フォーラム オペレーターの栗下 望です。
    ファイヤーさん、こんにちは。

    当フォーラムのご利用ありがとうございます。

    フォーラム オペレーターからのお願いです。

    本ご質問についてその後の状況はいかがでしょうか。
    チャブーンさんからの投稿はお役に立ちましたでしょうか?

    参考になった投稿には、[回答としてマーク] を設定いただき、
    同じ問題でお困りの方へ、情報をご提供いただけると幸いです。

    ご協力の程、どうかよろしくお願いいたします。


    参考になった投稿には回答としてマークの設定にご協力ください
    MSDN/TechNet Community Support 栗下 望

    2018年2月13日 1:29
    モデレータ
  • チャブーン 様

    迅速にご対応いただきありがとうございます。

    ご教示いただいたスクリプトにてDomainUsersセキュリティを持ったコンピュータオブジェクトができました。

    ありがとうございます。

    ただひとつ気になる値がございましてそちらをご教示いただいたスクリプトに混ぜて修正したいのですが、情報が少なく行き止まっております。

    下記操作で表示される値です。(GUI操作にて)

    コンピュータオブジェクト右クリック→[プロパティ]→[属性エディター]タブ

    一番下から25番目の項目「userAccountControl」

     ・手動で作成:0x1020 =WORKSTATION_TRUST_ACCOUNT | PASSWD_NOTREQD
     ・スクリプトで作成:0x1000 =WORKSTATION_TRUST_ACCOUNT

    手動で作成した場合と同じ設定しにしたいのですが、どうにかなりませんでしょうか。

    度々申し訳ございません。

    よろしくお願いいたします。

    2018年2月13日 6:42
  • チャブーンです。

    一番下から25番目の項目「userAccountControl」

     ・手動で作成:0x1020 =WORKSTATION_TRUST_ACCOUNT | PASSWD_NOTREQD
     ・スクリプトで作成:0x1000 =WORKSTATION_TRUST_ACCOUNT

    手動で作成した場合と同じ設定しにしたいのですが、どうにかなりませんでしょうか。

    userAccountControlはdsacls.exeの動作(アクセス許可の変更)とは無関係です。設定をそうしたい、というなら、コードの14行目(したから2行目)を以下のように変えればいいでしょう。

    $Computers|Foreach {New-ADComputer $_ -PasswordNotRequired $True;$objComputers+=Get-ADComputer $_}
    追記:コードのtypoがあったので、修正しました


    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。


    2018年2月14日 3:18
    モデレータ
  • チャブーン 様

    再び迅速にご回答いただきありがとうございます。

    ご教示いただいた通り修正した結果、想定した通り手動で設定したものと同じオブジェクトを作成することができました。

    大変助かりました。

    ありがとうございました。

    2018年2月15日 7:02