ドメイン グループをローカル管理者に自動的に追加しようとしたときに、ワークステーションのインストール スクリプトで次の catch22 に遭遇しました。
私が経験した問題は次のとおりです。
- ローカル管理者を使用している場合、ローカルグループにユーザーを追加する権限がありますが、ドメインに接続するにはドメイン資格情報を提供する必要があります。
- ドメイン ユーザーを使用している場合は AD に接続できますが、これを実行しているユーザーはまだローカル管理者ではないため、ローカル グループを変更することはできません。
私は GMP 環境にいるので、ルールと規制が本当に厳しく、他の可能なパスが制限されます。
- 役割が分割されているため、ドメイン管理者にアクセスできません。
- グループポリシーからグループをプッシュする可能性のあるOUへの変更は許可されません。
- リモート スクリプトで PowerShell を使用することは許可されていません
compmgmt.msc を使用し、要求されたときに必要な資格情報を提供すると、これを手動で回避するのはかなり簡単です...ただし、手動の手順を追加することは避け、インストール全体を可能な限り自動化したいと思います。
詳細:
- ワークステーションのOSはWindows 10です
- 私が使用しているスクリプトはPowerShellです
- スクリプトは昇格された権限を持つローカル管理者アカウントで実行されています
- ワークステーションはすでにドメインに参加しています
- ワークステーションをドメインに参加させるために使用されたアカウントはドメイン管理者ではありません
- ドメインアカウントで管理者権限を取得するには、部門のグループをローカル管理者グループに追加する必要があります
ローカル管理者グループにグループを追加するために使用するコードは次のとおりです。
$de = [ADSI]"WinNT://$Env:ComputerName/Administrators,group" $de.psbase.Invoke("Add",([ADSI]"WinNT://MyCompanyDomain/MyDepartmentGroup").path)
このコードはドメインアカウントで実行するとうまく機能します。そしてローカル管理者です。
これは新しいワークステーションのインストールに使用されるため、ドメインアカウントとして実行できます。またはローカル管理者。
前者では$de.psbase.Invoke("Add",
部品が故障し、
後者では部品が([ADSI]"WinNT://MyCompanyDomain/MyDepartmentGroup").path
故障する
start-process
別のセキュリティ コンテキストを取得するオプション付きのコマンドレットを使用しようとしました–verb runas
が、上記と同じ問題が発生しました。
何か方法はあるでしょうか
- ドメイン ユーザーのセキュリティ コンテキストでのみ解決し
([ADSI]"WinNT://MyCompanyDomain/MyDepartmentGroup").path
、それをローカル管理者のセキュリティ コンテキストで実行されているスクリプトの残りの部分に渡します (これは、compmgmt.msc が行う方法とほぼ同じです)
または
- ドメインに接続することなく、ハードコードされたデータから[ADSI]オブジェクトを構築する
または
- 私が考えていなかった、明白なこと
答え1
ファイルを介してドメイン グループをローカル グループに追加できるためunattend.xml
、スクリプトを作成する必要がなくなります。
システム イメージ マネージャー (SIM) による Unattend.xml の編集
SIM を開いた後unattend.xml
、ウィンドウの左下隅で のノードを見つけますMicrosoft-Windows-Shell-Setup
。(注記:イメージのアーキテクチャに対応するノード (64 ビット プラットフォームの場合は amd64) を使用する必要があります。Shell-Setup ノードを展開し、、、UserAccounts
をDomainAccounts
展開しますDomainAccountList
。ノードを右クリックしDomainAccount
、パス 7 (oobeSystem) への設定の追加を選択します。
SIM ウィンドウの中央で、新しく追加されたノードを構成する必要があります。DomainAccountList
ノードの値にドメイン名を入力しますDomain
。
ノードではDomainAccount
、Group
値を変更したいローカルグループの名前に設定する必要があります。この場合は管理者値は、Name
ローカル グループに追加するドメイン グループの名前に設定する必要があります。
Unattend.xml を手動で編集する (推奨されません)
unattend.xml
お好みのテキストエディタで手動でファイルを編集する<settings>
こともできます。oobeシステムパスします。DomainAccounts
以下のノードをコピーして、ノードのunattend.xml
後に配置できます。ノード内のおよびノード、およびノードで指定されているドメイン名をAdministratorPassword
必ず変更してください。Group
Name
DomainAccount
Domain
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" ... >
<UserAccounts>
<AdministratorPassword>
<Value>mylocaladminpassword</Value>
<PlainText>true</PlainText>
</AdministratorPassword>
<DomainAccounts>
<DomainAccountList wcm:action="add">
<DomainAccount wcm:action="add">
<Group>Administrators</Group>
<Name>Name-Of-Domain-Group-To-Add</Name>
</DomainAccount>
<Domain>DOMAIN_NAME_HERE</Domain>
</DomainAccountList>
</DomainAccounts>