新しいPCを使用する為の初期設定はPCの電源を入れてから、パスワードの設定、アンチウィルスソフトのインストール、ドメインに参加、Officeライセンス認証、プリンタドライバのインストール、通常使用するソフトのインストール など・など、古いPCからデータコピーする前までの状態にするには1時間程度要します。

そこで、少しでも作業効率を高めるためにADドメインに参加させる作業をGUIからpowershellスクリプトを実行するbatファイルを作成してみました。

ADドメインに参加するbatファイル

chcp 65001
@echo off
REM ################# 処理実行の確認 ######################
SET /P selected=”ドメインに登録しますか?(Y=YES / N=NO)”
if /i {%selected%}=={y} (goto :yes01)
if /i {%selected%}=={yes} (goto :yes01)

REM ################# NO 処理の中断  #######################
ECHO “NO が選択されました。ドメイン登録を中断し、処理を終了します。”
pause
EXIT

REM ################# YES ドメイン登録の開始  #################
:yes01
powershell -Command”$user=’Administrator’;
$password=ConvertTo-SecureString -AsPlainText ‘P@$$w0rd’ -Force;
$credential=New-Object system.Management.Automation.PSCredential $user,$password;
Add-computer -DomainName ‘domain’ -Credential $credential;
Restart-Computer”

【コマンドの説明】

chcp 65001

メモ帳で作成したbatファイルを「UTF-8」で保存したが、実行すると文字化けするので記述しました。

コマンドプロンプトで使う文字エンコードを変更するためのコマンド
数字   エンコード
932   Shift-JIS
65001  UTF-8
20932  EUC-JP 

@echo off

「コマンドの画面表示を消す」という指示のコマンドです。

処理実行の確認

SET /P selected=”ドメインに登録しますか?(Y=YES / N=NO)”
if /i {%selected%}=={y} (goto :yes01)
if /i {%selected%}=={yes} (goto :yes01)

「Y」キーか「YES」キーを入力して「enter」キーを押すと開始されます。

NO 処理の中断

ECHO “NO が選択されました。ドメイン登録を中断し、処理を終了します。”
pause
EXIT

「Y」キーまたは「YES」キー以外を入力して「enter」キーを押すと処理が中断されます。

powershell -Command

-Commandオプションで引数に直接スクリプトを指定する方法

拡張子「.ps1」でないファイルであっても入力リダイレクトでデータを送り込むことができます。

ドメインに登録する為の資格情報

$user=’Administrator’;

ユーザーに管理者名を設定します。

ConvertTo-SecureString

$password=ConvertTo-SecureString -AsPlainText ‘P@$$w0rd’ -Force;

セキュアストリングとしてパスワードを設定します。

ConvertTo-SecureString
Credentialに渡すときはSecureStringでないとだめなのでプレーンテキストをセキュリティで保護された文字列に変換します。

-AsPlainText ‘P@$$w0rd’
セキュリティで保護された文字列に変換するプレーンテキスト文字列を指定します。
実行には’P@$$w0rd’を管理者権限のパスワードにします。

-Force
PowerShell7以降ではAsPlainTextパラメータを使用する時にはForceパラメータは不要になりました。
PowerShell7前と互換性を維持するために記述しています。

New-Object

.NetFramWorkまたはCOMオブジェクトのインスタンスを作成します。

system.Management.Automation.PSCredential

Credentialに管理者IDとSecureStringに変換したパスワードを渡します。

Add-computer

ローカルコンピュータをドメインに参加させます。

-DomainName ‘domain’
ドメイン名’domein’を指定します。

-Credential $credential
ドメイン登録の資格者情報を指定します。

Restart-Computer

コンピュータを再鼓動します。

参考にさせてもらったURL

【PowerShell】コマンドでADドメイン参加を管理・確認 | SEの道標 (nesuke.com)

Powershellで-Credentialにセキュアなファイルで資格情報を渡す方法 – Qiita

スケジュールジョブ(PowerShell)でパスワードをセキュアに使う(セキュアストリング編) (vwnet.jp)