LoginSignup
0
0

More than 1 year has passed since last update.

Activedirectory ドメインのコンピューターにソフトをインストールするバッチの作成

Last updated at Posted at 2023-01-13

ActiveDirectory内のコンピューターにソフトを自動でインストールしようとして試行錯誤していたらうまくいったので共有します。
ある特定のソフトのインストールに成功しただけなのでうまくいかないこともあると思います。

状況

  • msiインストーラがないのでソフトウェア配布機能は使えない
  • ユーザーは管理者権限を持っていないのでユーザーのログインスクリプトでインストーラを実行させることはできない

検討事項

  • コンピュータのスタートアップスクリプトでインストーラを実行させる
  • インストール済みかどうか判別して未インストールの時のみ実行したい
  • 各コンピュータのインストール状況を確認したい

やったこと

  • ADサーバに共有フォルダを作成してそこにインストーラとバッチファイルを保存
  • そのフォルダにコンピュータのインストール状況を保存できるように Domain Computers に書き込み権限を付与
  • 以下、バッチファイルを作成して共有フォルダに保存。
  • グループポリシーオブジェクトを作成(SoftwareInstall)して「コンピューターの構成→ポリシー→Windowsの設定→スクリプト→スタートアップ」に上のバッチファイルを追加。ドメインコンピュータが実行できるようにUNC表記で追加(¥¥サーバー名¥フォルダ¥install.bat)
  • Active Directory ユーザーとコンピューターで対象のコンピュータを入れるOU(ソフトインストール用)を作成
  • 上記OU(ソフトインストール用)に作成したグループポリシーオブジェクト(SoftwareInstall)をリンク
  • インストールしたいコンピュータを上記OU(ソフトインストール用)に移動

これで対象のコンピュータを再起動すればインストールされました!
共有フォルダ内に[コンピュータ名].txtが作成されて、そのコンピュータのインストール状況が記録されます。

参考にしたサイト

作成したバッチファイル

install.bat
@ECHO OFF

SETLOCAL ENABLEDELAYEDEXPANSION

SET filepath=%~dp0\%COMPUTERNAME%.txt
SET softname=[インストールソフト名(事前に調べておく)]
SET installed=False
SET installcommand=[インストーラ実行コマンド文字列(UNC表記)]

FOR /F "delims=" %%S IN ('reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall" /s') DO (
    SET TMP=%%S
    IF NOT "!TMP:DisplayName=!" == "!TMP!" (
        IF NOT "!TMP:%softname%=!" == "!TMP!" (
            SET installed=True
        )
    )
)

FOR /F "delims=" %%S IN ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" /s') DO (
    SET TMP=%%S
    IF NOT "!TMP:DisplayName=!" == "!TMP!" (
        IF NOT "!TMP:%softname%=!" == "!TMP!" (
            SET installed=True
        )
    )
)

IF "%installed%" == "True" (
    @ECHO %DATE% %TIME% なにもしません。。。 [%username%] >> %filepath%
) ELSE (
    START /WAIT %installcommand%
    @ECHO %DATE% %TIME% インストール完了! [%username%] >> %filepath%
)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0