ドメインに参加するときにスクリプトを実行する

ドメインに参加するときにスクリプトを実行する

私は Microsoft ドメイン (主に 2008r2\7) を持っています。
ドメインに参加した直後 (再起動後) に (ユーザー ログインを必要とせずに) スクリプトを実行する方法を探していましたが、これまでのところ失敗しています。

また、一度だけ実行したいので、繰り返しタスクをスケジュールすることはオプションではありません。
何度も実行させるのは無駄に思えます。

スタートアップ スクリプトを含む GPO を試しましたが、コンピューターが GPO を受信するのはスタートアップのかなり後です。スケジュール
されたタスク (異なるトリガーを使用) を含む GPO も試しましたが、これも機能しませんでした。
「スタートアップ時」トリガーはスタートアップ スクリプトと同じように失敗します。
「タスク作成時」は失敗します。通常の方法で作成されていないためだと思います。
「スケジュール時」は関係ありません。参加直後に実行する必要があるためです (すでに過ぎた日付を設定しても機能しませんでした)。
関連するレジストリ キーは見つかりませんでしたが、GPO スタートアップ スクリプトと同じ問題があると思われます。

必要なことを実現できる唯一のアイデアは、DC 上の関連イベントにタスクをアタッチし、スクリプトをリモートで実行することです。

もっと良い提案はありますか?

--編集--
回答 (すばらしいですが、十分ではありません) から、いくつか追加したい点があります。1
. 質問は両方のサーバー (2008r2\2012\2012r2) に当てはまりますが、私は 2012r2 でのみテストしました。2
. 私は、より 1 回だけ実行に近いソリューションを探しています。つまり、何らかの条件が満たされるまで無限に実行させたくないのです。3
. サーバーとワークステーションを展開するためにイメージを使用していますが、イメージの編集を伴うソリューションは使用できません。理由は、a) スクリプトを変更するたびにイメージを更新する必要があるため、b) BYOD のためです。4
. 結合スクリプトは使用していないため (単に必要ないため)、使用し始めても無駄に思えます。また、問題もいくつかあります (たとえば、どこに配置すればよいですか? イメージ内ですか? 共有の場所ですか? BYOD はどうですか? そうなると、ポイント 3 が無効になります)。

ありがとう。

答え1

ビルドイメージにカスタムレジストリキーを追加します。単に「1」の値をどこかに追加します。
ビルドイメージにレジストリキーの値をチェックするスケジュールされたタスクを追加し、このレジストリキーにドメイン名のチェックを追加します。

HKLM\System\CurrentControlSet\Services\Tcpip\Parameters

両方が見つかった場合はスクリプトを実行し、完了時にカスタム レジストリ キーを 0 に変更します。このタスクを起動時に実行します。

このタスクをそのまま残すか、スケジュールされたタスクを削除する GPO を用意することができます。ただし、そのまま残してスクリプトを再実行する必要がある場合は、レジストリ キーを 1 に戻して再起動するだけです。

若干のセキュリティ上の懸念として、スケジュールされたタスクはローカル管理者アカウントとして実行する必要があります。

答え2

いずれにせよ、ドメインに参加した後は再起動する必要はないのでしょうか? スタートアップ スクリプトを作成した場合、再起動後すぐに他のグループ ポリシー オブジェクトが読み込まれるときに、そのスクリプトが適用されます。

ドメインへの参加はどのように行いますか? ドメインへの参加をスクリプトに統合することもできます。Powershell では、これは Add-Computer で実行され、コマンド ラインからは netdom を使用できます。

通常、構成管理ツールを使用している場合は、これをタスク シーケンスに統合します。

答え3

結合はどのように実行されますか? 手動の GUI 操作ですか、それともスクリプト経由ですか? スクリプトの場合は、結合スクリプトに行を追加して、2 番目のスクリプトを RunOnce レジストリ キー経由で実行します。

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce マイクロソフト

---編集開始---
ああ!その通り

GPO の適用が遅れているというコメントについて考えてみると... 私は主に同期 GPO 処理を行うサーバー OS で作業しています。ワークステーションは非同期で行います。非同期にするには、次の操作を試してください。

ビルドプロセス/イメージで「高速ログオン最適化」を無効にしてみてください https://technet.microsoft.com/ja-jp/magazine/gg486839.aspx
コンピューターの構成\管理用テンプレート\システム\ログオン
コンピューターの起動時およびログオン時に常にネットワークを待機する = 有効

GPO スタートアップ スクリプトを作成する GPO:
コンピューター構成/ポリシー/Windows 設定/スクリプト/スタートアップ

そこで定義したスクリプト内で、次のコードを使用します。

$built = gwmi Win32_OperatingSystem | foreach {[System.Management.ManagementDateTimeconverter]::ToDateTime($_.InstallDate)}
if ($built -gt (get-date).addHours(-4)) {
    "do something"
}

答え4

私は以前学校で働いていました。

そして、参加とスクリプトのプロセスを自動化します (何年も続く完璧なイメージを展開するのは、おそらく理想論です)。そこで、WDS/MDT を使用して展開しました。

.xml 応答ファイルに入力したので、展開されたマルチキャスト イメージは OU (組織単位) インストールに参加し、最終スクリプトに GPO を適用して OU インストールから移動します。

そうすれば、ワークステーションの名前を正しい名前に変更し、正しい OU に配置するだけで済みます。

関連情報