none
ログオンスクリプトが適用されたかの確認 RRS feed

  • 質問

  • ドメコンでユーザープロパティを開いた下図でログオンスクリプト欄を埋めています。

    ここの値が正しく反映されているか確認する方法はありませんか。

    ポリシーのログオンスクリプトはgpresultで反映されたか確認できますが

    同じような確認の仕方はないでしょうか

    2015年4月27日 2:46

回答

  • チャブーンです。

    おっしゃるログオンスクリプトを直接確認する方法は残念ながらない、ようです。ですから次善の策として、以下のやり方があるように思います。

    • 変更対象の更新日時を直接確認する
      ファイルであれば簡単ですが、レジストリのような場合、したのような追加functionを使って更新日時を確認することができます。
      https://gallery.technet.microsoft.com/scriptcenter/Get-RegistryKeyLastWriteTim-63f4dd96
    • スクリプト内に「実行ログをイベントログに書き込む」ロジックを組み入れる
      以下のようなスクリプトを組み込むことで、可能になるでしょう。よいページだと思いますが、vbscriptをpowershellに置き換えたい場合は少し手間かもしれません。
      http://www.monyo.com/technical/windows/35.html

    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。


    2015年4月30日 13:06
    モデレータ
  • こんにちは。
    確認したい内容は、各ユーザーアカウントのログオンスクリプトの設定が入っているか、でよいでしょうか(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について詳しく情報が必要であれば、追加でコメントを戴ければと思います。


    • 編集済み 社員番号042 2015年5月5日 7:33
    • 回答としてマーク sys11 2015年5月7日 1:17
    2015年5月5日 7:30

すべての返信

  • チャブーンです。

    おっしゃるログオンスクリプトを直接確認する方法は残念ながらない、ようです。ですから次善の策として、以下のやり方があるように思います。

    • 変更対象の更新日時を直接確認する
      ファイルであれば簡単ですが、レジストリのような場合、したのような追加functionを使って更新日時を確認することができます。
      https://gallery.technet.microsoft.com/scriptcenter/Get-RegistryKeyLastWriteTim-63f4dd96
    • スクリプト内に「実行ログをイベントログに書き込む」ロジックを組み入れる
      以下のようなスクリプトを組み込むことで、可能になるでしょう。よいページだと思いますが、vbscriptをpowershellに置き換えたい場合は少し手間かもしれません。
      http://www.monyo.com/technical/windows/35.html

    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。


    2015年4月30日 13:06
    モデレータ
  • こんにちは。
    確認したい内容は、各ユーザーアカウントのログオンスクリプトの設定が入っているか、でよいでしょうか(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について詳しく情報が必要であれば、追加でコメントを戴ければと思います。


    • 編集済み 社員番号042 2015年5月5日 7:33
    • 回答としてマーク sys11 2015年5月7日 1:17
    2015年5月5日 7:30
  • ログオンスクリプトがユーザーのPC上で走っているかどうか確認したい  が、やりたいことでした。

    確かにスクリプトから何か出力させれば良いだけの話でした。

    仕様のない質問にお付き合い頂き有難うございました。

    2015年5月7日 1:17