トップ回答者
ログオンスクリプトが適用されたかの確認

質問
回答
-
チャブーンです。
おっしゃるログオンスクリプトを直接確認する方法は残念ながらない、ようです。ですから次善の策として、以下のやり方があるように思います。
- 変更対象の更新日時を直接確認する
ファイルであれば簡単ですが、レジストリのような場合、したのような追加functionを使って更新日時を確認することができます。
https://gallery.technet.microsoft.com/scriptcenter/Get-RegistryKeyLastWriteTim-63f4dd96 - スクリプト内に「実行ログをイベントログに書き込む」ロジックを組み入れる
以下のようなスクリプトを組み込むことで、可能になるでしょう。よいページだと思いますが、vbscriptをpowershellに置き換えたい場合は少し手間かもしれません。
http://www.monyo.com/technical/windows/35.html
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 編集済み チャブーンMVP, Moderator 2015年4月30日 13:07
- 回答の候補に設定 佐伯玲 2015年5月1日 1:01
- 回答としてマーク sys11 2015年5月7日 1:17
- 変更対象の更新日時を直接確認する
-
こんにちは。
確認したい内容は、各ユーザーアカウントのログオンスクリプトの設定が入っているか、でよいでしょうか(A)?
それとも、ログオンスクリプトがユーザーのPC上で走っているかどうか確認したいのでしょうか(B)?
(A)ならば、私の環境では、以下のVBSをドメインコントローラ上でCSCRIPT経由で実行して結果が出ています。
設定が入っていない場合は、元々ブランクが返りますが分かりにくいので[BLANK]という文字が返るようにしています。
お使いのAD環境に合わせて、ソース2行目 strOU の情報を書き換えて使ってみてください。
'---------------------------------------------------------------- On Error Resume Next strOU = "OU=GroupName,DC=xxx,DC=yyy,DC=zzz" Set objConnection = CreateObject("ADODB.Connection") objConnection.Open "Provider=ADsDSOObject;" Set objCommand = CreateObject("ADODB.Command") objCommand.ActiveConnection = objConnection objCommand.Properties("Page Size") = 1000 objCommand.CommandText = "<LDAP://" & strOU & ">;" & _ "(&(objectclass=user)(objectcategory=person));" & _ "cn,scriptPath;subtree" Set objRecordSet = objCommand.Execute Do Until objRecordSet.EOF strRetDat=objRecordSet.Fields("scriptPath").Value If isBlank(strRetDat) Then strRetDat="[BLANK]" WScript.Echo objRecordSet.Fields("cn").Value & "," & strRetDat objRecordSet.MoveNext Loop objRecordSet.Close Set objRecordSet = Nothing Set objCommand = Nothing objConnection.Close Set objConnection = Nothing '----------------------------------------------------------------
(B)ならば、実行中のログオンスクリプトに数行追加して、コンピュータ名やユーザー名を使ったテキストファイルをドメインコントローラ上の共有フォルダに吐き出させれば、誰がいつどのコンピュータでログオンしスクリプトが動いたかを調べることができるようになります。
Bについて詳しく情報が必要であれば、追加でコメントを戴ければと思います。
すべての返信
-
チャブーンです。
おっしゃるログオンスクリプトを直接確認する方法は残念ながらない、ようです。ですから次善の策として、以下のやり方があるように思います。
- 変更対象の更新日時を直接確認する
ファイルであれば簡単ですが、レジストリのような場合、したのような追加functionを使って更新日時を確認することができます。
https://gallery.technet.microsoft.com/scriptcenter/Get-RegistryKeyLastWriteTim-63f4dd96 - スクリプト内に「実行ログをイベントログに書き込む」ロジックを組み入れる
以下のようなスクリプトを組み込むことで、可能になるでしょう。よいページだと思いますが、vbscriptをpowershellに置き換えたい場合は少し手間かもしれません。
http://www.monyo.com/technical/windows/35.html
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 編集済み チャブーンMVP, Moderator 2015年4月30日 13:07
- 回答の候補に設定 佐伯玲 2015年5月1日 1:01
- 回答としてマーク sys11 2015年5月7日 1:17
- 変更対象の更新日時を直接確認する
-
こんにちは。
確認したい内容は、各ユーザーアカウントのログオンスクリプトの設定が入っているか、でよいでしょうか(A)?
それとも、ログオンスクリプトがユーザーのPC上で走っているかどうか確認したいのでしょうか(B)?
(A)ならば、私の環境では、以下のVBSをドメインコントローラ上でCSCRIPT経由で実行して結果が出ています。
設定が入っていない場合は、元々ブランクが返りますが分かりにくいので[BLANK]という文字が返るようにしています。
お使いのAD環境に合わせて、ソース2行目 strOU の情報を書き換えて使ってみてください。
'---------------------------------------------------------------- On Error Resume Next strOU = "OU=GroupName,DC=xxx,DC=yyy,DC=zzz" Set objConnection = CreateObject("ADODB.Connection") objConnection.Open "Provider=ADsDSOObject;" Set objCommand = CreateObject("ADODB.Command") objCommand.ActiveConnection = objConnection objCommand.Properties("Page Size") = 1000 objCommand.CommandText = "<LDAP://" & strOU & ">;" & _ "(&(objectclass=user)(objectcategory=person));" & _ "cn,scriptPath;subtree" Set objRecordSet = objCommand.Execute Do Until objRecordSet.EOF strRetDat=objRecordSet.Fields("scriptPath").Value If isBlank(strRetDat) Then strRetDat="[BLANK]" WScript.Echo objRecordSet.Fields("cn").Value & "," & strRetDat objRecordSet.MoveNext Loop objRecordSet.Close Set objRecordSet = Nothing Set objCommand = Nothing objConnection.Close Set objConnection = Nothing '----------------------------------------------------------------
(B)ならば、実行中のログオンスクリプトに数行追加して、コンピュータ名やユーザー名を使ったテキストファイルをドメインコントローラ上の共有フォルダに吐き出させれば、誰がいつどのコンピュータでログオンしスクリプトが動いたかを調べることができるようになります。
Bについて詳しく情報が必要であれば、追加でコメントを戴ければと思います。