質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

2回答

9305閲覧

VBSでWindows7を全自動ドメイン参加させたい。(後にVBE化予定)

退会済みユーザー

退会済みユーザー

総合スコア0

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2015/10/13 12:24

編集2015/10/25 10:58

前提

Windows 7 Pro 64bit VL版 をインストールしたPCを作業員(アルバイト)に、
現地設置していただく必要があります。
作業自体は、その他作業に必要なモジュール等を含めたCDを配布して行います。

やりたい事 (要件)

その際の作業として、LAN接続後にドメイン参加が必要となります。
作業品質を確保する為に全自動化したいのですが、
セキュリティの観点からパスワード等を作業員に伝えたくありません。
※一時的な仮パスワードであっても「漏えいした」という事実が問題となる為。

聞きたい事

上記の要件に合う、ワンクリックでドメイン参加が可能なスクリプトを教えてください。
※Power Shellでも可能であれば、ご回答お願いします。

期日(変更 2015/10/25)

//申し訳ありませんが、回答頂ける方は、10月15日中にお願いいたします。

期日は11月25日に延期とさせてください。
※作業開始2日前の為。

###お詫びと延期(2015/10/25)
ご回答いただいている中、お礼も出来ずに申し訳ありません。
上述の期日が別件の問題により大幅にリスケとなりました。
少し期日が伸びたので、もう少し詳細を追記したいと思います。

###追記(2015/10/25)

  • 作業員は、ローカルの管理者アカウントについては通知されています。
  • コンピュータアカウントは、事前にAD上に各OUに作成されています。
  • ADは、Windows Server 2012 R2 Enterpriseです。
  • PCは、接続環境が無い為、展開時にドメイン参加等は不可となります。
  • 使用するドメインアカウントは、Domain User or Domain Admin未決です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こんばんは。

パスワード等の問題をVBE化によって回避するとすれば、
スクリプトとしては以下のような形で実現が出来るかと思います。

VirtualBox上、以下の構成で確認してみました

AD : Windows Server 2008R2 Std、 Client : Windows 7 Pro SP1(x64)

利用アカウント : Domain Usersのみに所属

VBScript

1Const JOIN_DOMAIN = 1 2Const ACCT_CREATE = 2 3 4Dim objShell 5Dim objNetWork 6Dim objComputer 7Dim strComputer 8Dim strDomain 9Dim strOU 10Dim sreUser 11Dim strPassword 12Dim retValue 13Dim message 14 15message = "ドメイン参加に成功しました" 16 17' 管理者に昇格して実行 18If WScript.Arguments.Count = 0 Then 19 Set objShell = CreateObject("Shell.Application") 20 objShell.ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ dmyarg", "", "runas", 1 21 WScript.Quit 22End If 23 24'ドメイン参加に必要な情報を記述 25strDomain = "domain.local" 26strOU = "OU=Computers;DC=domain;DC=local" 27strUser = "domain\user" 28strPassword = "password" 29 30' コンピュータ名の取得 31Set objNetWork = WScript.CreateObject("WScript.Network") 32strComputer = objNetWork.ComputerName 33 34Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!//" & strComputer & "/root/cimv2:Win32_ComputerSystem.Name='" & strComputer & "'") 35 36retValue = objComputer.JoinDomainOrWorkgroup(strDomain, strPassword, strUser, strOU, JOIN_DOMAIN + ACCT_CREATE) 37 38 39If retValue <> 0 Then 40 message = "ドメイン参加に失敗しました(" & retValue & ")" 41End If 42 43MsgBox message

JoinDomainOrWorkgroup method
https://msdn.microsoft.com/en-us/library/aa392154%28VS.85%29.aspx

投稿2015/10/14 12:09

sgr-2

総合スコア294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/10/25 11:15

ご回答ありがとうございます。 お礼が遅れてしまい、申し訳ありませんでした。 頂いた回答からは、OUの指定があります。 しかし、追記しました通り事前にAD上で各OUにアカウントを作成しています。 その為、以下のように修正して利用してみたいと考えています。 retValue = objComputer.JoinDomainOrWorkgroup(strDomain, strPassword, strUser, NULL, JOIN_DOMAIN + ACCT_CREATE) こうする事で、OU指定がない為、自動的に既に存在しているコンピュータアカウントへ 紐付けられ、事前に作成したOUに紐付けられる認識です。 sgr-2様の回答は、とてもシンプルに利用させていただけそうでしたが まだまだ私の技術力では、全てを理解してカスタマイズできるレベルではありません。 今回は申し訳ありませんが、ベストアンサーはpi-chan様を選ばせていただきました。 本スクリプトも後学の為、動作確認をしたいと思います。 今後とも、ご回答にご協力いただければと思います。 ありがとうございます。
guest

0

ベストアンサー

Windowsのインストール作業は既に完了してしまっているのでしょうか?
本来であれば、このような目的には sysprep を利用すると、OSのセットアップ時にドメイン参加までを一貫して自動実行できるように事前に設定できるのですが…

sysprepで環境複製用のマスタ・イメージを作成する(Windows 7/8編)
Sysprep 実行時にドメイン参加を自動化する方法

既にWindowsセットアップ済みのPCを貸与して後続のセットアップ作業を実施してもらう場合は、ご質問のようにドメイン参加作業をスクリプト化しておく必要がありますけれども、方法はいろいろとあるようです。
しかし、netdom コマンド1つでドメイン参加できるので、バッチファイルなりVBSなりに記述しておき、必要であればスクリプト実行後にスクリプト自体を削除してしまうなどの方法にすれば良いのではないでしょうか。

netdomコマンドでドメインに参加す

スクリプト本体はPC側のあまり一般的ではない適当なディレクトリ配下に仕込んでおき、CD側の起動専用のスクリプト等から実行してドメイン参加し、実行後にスクリプトを自動削除してしまう運用にすれば、パスワードの漏洩を未然に防げるかと思います。


《 追記 》

パスワードの秘匿性を重視するのであればこんなツールもありますので、ご参考まで。

  BAT ファイルをEXE ファイルに変換してくれるソフト「Batch To Exe Converter」

投稿2015/10/13 14:35

編集2015/10/13 14:38
pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/10/25 11:09

ご回答ありがとうございます。 お礼が遅れてしまい、申し訳ありませんでした。 追記しました通り、Windows イメージは既に別の場所でスタンドアロンで展開済みです。 その為、展開時のAutoUnattend.xmlやSysprepを利用したドメイン参加は不可です。 また、AD構築側の進捗遅延の為、オフラインドメイン参加も現実的に不可となります。 ご提案の内容は以下のように認識しました。 ・展開イメージの深階層ディレクトリ内に実際に実行するBATファイルを配置。 ・作業用ディスクをVBS(VBE)でBATファイルを呼び出すだけにする。 ・処理完了後にディレクトリ内のBATファイルを削除する。 確かに、呼び出し元は簡易なスクリプトの為、私でも実装可能なレベルと思います。 また、呼び出しスクリプトを暗号化してしまえば、 呼び出し先が見えない為、一定の安全は確保できます。 技術力の低さを常々痛感していた為、敢えて技術的な目線でしか考えていませんでした。 ご提案の方法は、シンプルで技術力が低い私でも実装可能な手段でしたので pi-chan様の回答をベストアンサーとして採用させて頂きたいと思います。 また、他の方法等がありましたら、後学の為にご教示いただければと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問