SlideShare a Scribd company logo
第2部 応用編①
WMI による Windows Server の 監視
                       マ゗クロソフト株式会社
                            エバンジェリスト
                                   安納 順一
          http://blogs.technet.com/junichia/

                                               1
本日の目的
 WMIを使用して
     Windows Server を監視する方法を学びます

 ※今回は VBScript を使用します

   WMIとは何か?
   WMIを使用したスクリプト作成の基礎
   WMIを使用した゗ベントの待ち合わせ
   WMIを使用した永続的監視の実装
  スクリプトの奥深さに感動していただけるはずです




                                   2
WMI とは
 Windows Management Instrumentation
  WBEM/CIMに準拠
  各種管理情報への共通゗ンターフェース
  Windows Management Serviceとして実装
  Windows 2000以上のOSに標準搭載
  WMIプロバ゗ダはベンダーが拡張可能
  別途エージェントは一切必要なし
  もちろんタダ!




                                      3
4
WMI にゕクセスするには

  バッチフゔ゗ルから
   WMICコマンド(Windows XP以降)
  Windows Script Host から
  PowerShell から
  Visual Studio から
  GUIツールから
   WMI Admin Tools など


                            5
WMIのゕーキテクチャ
 管理ゕプリケーション



                      COM/DCOM   CIM Repository
 CIM Object Manager



 Object Provider      COM/DCOM




 Object




                                    ・・・・・・・
                                                  6
WMIの構造
 %WinDir%¥System32¥wbem 配下の mof (Managed Object Format)
 フゔ゗ルに定義されている

                                 Namespace によって使える
          Namespace              Class が異なることに注意

                                 規定のNamespaceは
                      Class
                                 Root¥CIMV2

 (例) ROOT¥COMV2
           Win32_OperatingSystem
           Win32_NTLogEventLog
           ・
           ・
     ROOT¥Default
           STDREGPROV
     ROOT¥microsoft¥SqlServer¥ComputerManagement10
           SqlService
           ・
                                                          7
           ・
WMIの主役 Win32_クラス
 一部抜粋
Win32_ActiveRoute              Win32_ModuleTrace
Win32_ComputerShutdownEvent    Win32_NamedJobObject
Win32_ComputerSystemEvent      Win32_NTDomain
Win32_ConnectionShare          Win32_PingStatus
Win32_CurrentTime              Win32_ProcessStartTrace
Win32_DeviceChangeEvent        Win32_ProcessStopTrace
Win32_DiskQuota                Win32_Proxy
Win32_GroupInDomain            Win32_QuotaSetting
Win32_IP4PersistedRouteTable   Win32_ServerConnection
Win32_IP4RouteTable            Win32_SessionConnection
Win32_IP4RouteTableEvent       Win32_TokenGroups
Win32_JobObjectStatus          Win32_TokenPrivileges
Win32_LoggedOnUser             Win32_VolumeChangeEvent
Win32_LogonSession             Win32_WindowsProductActivation
Win32_LogonSessionMappedDisk   Win32_ControllerHasHub
Win32_NetworkAdapter                  ・
Win32_ComputerSystem                  ・
       ・                              ・
       ・
                                                                8
WMI Tools ~ CIM Studio
 ブラウザを使用して、WMIの構造、実際の゗ンスタンスを確認
 クエリを発行して戻り値を確認
 リモートコンピュータに接続も可能




                                 9
WMIにVBScriptから接続




                   10
WMI Scriptingの基本形
 'SWbemLocator オブジェクトの作成
 Set Locator = CreateObject("WbemScripting.SWbemLocator")

 ‘ローカルコンピュータへの接続
 Set Service = Locator.ConnectServer("", "root¥cimv2", "", "")

 ‘クエリーの定義(WQL:WMI Query Language)
 strQuery = "Select * from Win32_NetworkAdapterConfiguration " & _
            "where IPEnabled = True"

 ‘クエリーの実行(インスタンスを取得する)
 Set objNet = Service.ExecQuery(strQuery)

 '結果の参照
 For each n in objNet
         WScript.Echo n.caption
         WScript.Echo n.MACAddress
 Next

                                                                     11
WMIスクリプトの実行権限
  リモートコンピュータに対するゕクセス権の取得
Set Service = Locator.ConnectServer(RemoteHost,Namespace,User,Password)



   特殊権限の取得
Set Locator = CreateObject("WbemScripting.SWbemLocator")

Set Service = Locator.ConnectServer("DC01", "root¥cimv2", "Dom¥administrator", "pass")

Service.Security_.Privileges.AddAsString "SeBackupPrivilege", True
Service.Security_.Privileges.AddAsString "SeSecurityPrivilege", True

strQuery = "Select * from Win32_NTEventlogFile" & _
            " Where LogfileName = 'Security' "

Set obj = Service.ExecQuery(strQuery)

For each n in obj
          r = n.BackupEventLog("C:¥tmp¥Security.evt")
Next

                                                                                         12
(注意)リモートコンピュータにゕクセスする前に①
 リモートからの接続が許可されていることを確認
 規定ではシステム管理者にはゕクセスが許可されている




                             13
(注意)リモートコンピュータにゕクセスする前に②




                           14
サーバーを監視する




            15
゗ベントの監視
  システムで発生した゗ベントをトリガーとして処理を実行
  一時監視と永続的監視
  以下の゗ベント監視用クラスが用意されている
   __InstanceCreationEvent
      あたらしい゗ンスタンスが作成された
   __InstanceModificationEvent
      ゗ンスタンスの属性が変更された
   __InstanceDeletionEvent
      既存の゗ンスタンスが削除された




                                 16
監視の゗メージ


             ゗ベントログに゗ベ
   WORDが起動    ントが書かれた  USBデバ゗スが挿された
               タ゗ムゾーンが変更
  ユーザーがログオン
                        IPゕドレス変更
  シャットダウン      メモ帳が終了




                                      17
一時的な監視例①
__InstanceCreationEventによる新たに作成されたインスタンスの監視

Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objService = objLocator.ConnectServer(TargetComputer, _
                                             "", AdminUser, AdminPass)

strQueryCreate = "Select * " & _
                  "FROM __InstanceCreationEvent WITHIN 5 " & _
                                                                      監視したい
                  "WHERE TargetInstance ISA 'Win32_Process' "          クラス

Set objEventsCreation = objService.ExecNotificationQuery(strQueryCreate)

Do
         Set CreationEvent = objEventsCreation.Nextevent
         ProcessName = CreationEvent.TargetInstance.Name        Win32_Procass
         Wscript.Echo ProcessName                                のプロパテゖ
Loop


                                                                                18
一時的な監視例②
__InstanceModificationEventによるユーザーログオンの監視

Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objService = objLocator.ConnectServer(TargetComputer, _
                           ‚ROOT¥CIMV2", AdminUser, AdminPass)

strQuery= "Select * " & _
         "FROM __InstanceModificationEvent WITHIN 5 " & _
         "WHERE TargetInstance ISA 'Win32_ComputerSystem' "

Set objEventsModification = objService.ExecNotificationQuery(strQuery)

Do
         Set ModificationEvent = objEventsModification.Nextevent
         UserName = ModificationEvent.TargetInstance.UserName
         Wscript.Echo UserName
Loop


                                                                         19
そこでこんな方法…
       現在のログオンセッション一覧をキャッシュ
       ログオンしたらセッション作成
       ログオフしたらセッション削除


            ログオン時に割り振られた番号

            ログオンのタ゗プ(対話、ネットワーク…)




       現在ログオンしているユーザーのユーザーIDとログ
       オンIDをキャッシュ


            ログオンしたユーザーID

            ログオン時に割り振られた番号


                                   20
一時的な監視例③
__InstanceCreationEventによるユーザーログオンの監視
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objService = objLocator.ConnectServer("demo2008", "ROOT¥CIMV2", "", "")
Wscript.Echo "接続が完了しました"
strQueryCreate = "Select * FROM __InstanceCreationEvent WITHIN 5 " & _
                         "WHERE TargetInstance ISA 'Win32_LogonSession' ‚
Set objEventsCreation = objService.ExecNotificationQuery(strQueryCreate)
Do
            Set CreationEvent = objEventsCreation.Nextevent
            LogonId= CreationEvent.TargetInstance.LogonID
            LogonType = CreationEvent.TargetInstance.LogonType
            strQueryLU = "Select * " & _
                         ‚FROM Win32_LoggedOnUser‛ ' Where Dependent like ‘%" & LogonId & "%’‚
            Set objLoggedOnUser = objService.ExecQuery(strQueryLU)
            For Each u in objLoggedOnUser
                        If instr(u.Dependent, LogonId) Then
                                     Wscript.Echo u.Antecedent
                                                                         ユーザーID
                                     Wscript.Echo u.Dependent
                                                                      ログオンID
                     End If
          Next
Loop

                                                                                                 21
一時的な監視例③‘ (③をブラッシュアップ)
 Set objLocator = CreateObject("WbemScripting.SWbemLocator")
 Set objService = objLocator.ConnectServer("demo2008", "ROOT¥CIMV2", "", "")

 Wscript.Echo "接続が完了しました"
 strQueryCreate = "Select * FROM __InstanceCreationEvent WITHIN 5 " & _
                         "WHERE TargetInstance ISA 'Win32_LogonSession' ‚
 Set objEventsCreation = objService.ExecNotificationQuery(strQueryCreate)
 Do
            Set CreationEvent = objEventsCreation.Nextevent
            LogonId= CreationEvent.TargetInstance.LogonID
            LogonType = CreationEvent.TargetInstance.LogonType
            Select Case LogonType
                        Case 0 strLogonType = "System"
                        Case 2 strLogonType = "Interactive"
                        Case 3 strLogonType = "Network"
                        Case 4 strLogonType = "Batch"
                        Case 5 strLogonType = "Service"
                        Case 6 strLogonType = "Proxy"
                        Case 7 strLogonType = "Unlock"
                        Case 8 strLogonType = "NetworkClearText"
                        Case 9 strLogonType = "NewCredentials"
                        Case 10 strLogonType = "RemoteInteractive(TS)"
                        Case 11 strLogonType = "CachedInteractive"
                        Case 12 strLogonType = "CachedRemoteInteractive"
                        Case 13 strLogonType = "CachedUnlock"
            End Select                                                         22
strQueryLoggedOnUser = "Select * " & _
                  "FROM Win32_LoggedOnUser"
       Set objLoggedOnUser = objService.ExecQuery(strQueryLoggedOnUser)

       For Each u in objLoggedOnUser
                   If instr(u.Dependent, LogonId) Then
                       arrAntecedent = Split(u.Antecedent,".")
                       Wscript.Echo Date & "," & Time & "," & _
                                      LogonId & "," & arrAntecedent(2) & "," & strLogonType
                                 Exit For
                   End If
       Next

Loop




                                                                                              23
一時的な監視例④
 __InstanceDeletionEventによるユーザーログオフの監視
 Set objLocator = CreateObject("WbemScripting.SWbemLocator")
 Set objService = objLocator.ConnectServer("demo2008", "ROOT¥CIMV2", "", "")

 Wscript.Echo "接続が完了しました"
 strQueryCreate = "Select * " & _
                        "FROM __InstanceDeletionEvent WITHIN 5 " & _
                        "WHERE TargetInstance ISA 'Win32_LogonSession' "

 Set objEventsDeletion = objService.ExecNotificationQuery(strQueryCreate)

 Do
            Set DeletionEvent = objEventsDeletion.Nextevent
            LogonId= DeletionEvent.TargetInstance.LogonID
            LogonType = DeletionEvent.TargetInstance.LogonType

            Wscript.Echo Date & "," & Time & "," & LogonId & "," & strLogonType

 Loop



                セッションの削除はログオフしてから1分程度を要する
                                                                                  24
③’と④を組み合わせると
  ログオンID をキーにしてログデータベースに書き込むことでサーバー
  を使用したユーザーの履歴を管理できる




                                       ログDB

 ServerName   LogonID   LogonType     LogonDateTime   LogoffDateTime   Domain   UserID

 demo2008     5443965   Interactive   2009/03/01      2009/03/01       dom      anno
                                      10:00:00        12:15:30
 demo2008     6220879   TS            2009/03/01      2009/03/01       dom      administrator
                                      12:00:00        13:10:01
                                                                                                25
スクリプトをサービス化




              26
゗ベントコンシューマ
イベントコンシューマとは….
 システムで発生したイベントをトリガーに特定のアクションを
 実行する機構
 • ActiveScriptEventConsumer
   – イベントが発生したらスクリプトを実行
 • LogFileEventConsumer
   – ゗ベントが発生したらテキストフゔ゗ルに書き込み
 • NTEventLogEventConsumer
   – ゗ベントが発生したら゗ベント
 • SMTPEventConsumer
   – ゗ベントが発生したらメール送信
 • CommandLineEventConsumer
   – ゗ベントが発生したらコマンドを実行

      システムに登録されるのでログオンする必要が無い
       ただし、監視できるのはローカルコンピュータ
                                27
MOFフゔ゗ルによる永続的監視
 ActiveScriptEventConsumerによるmofフゔ゗ルの例
  #pragma namespace("¥¥¥¥.¥¥root¥¥subscription")

  instance of ActiveScriptEventConsumer as $Cons
  {
      Name = "LogonUserLogging";
      ScriptingEngine = "VBScript";
      ScriptFileName = "c:¥¥tmp¥¥demoscript¥¥wmisample08.vbs";
  };

  instance of __EventFilter as $Filt
  {
      Name = "LogonUser";
      Query = "SELECT * FROM __InstanceCreationEvent WITHIN 5 "
            "WHERE TargetInstance ISA ¥"Win32_LogonSession¥" ";
      QueryLanguage = "WQL";
      EventNamespace = "root¥¥cimv2";
  };

  instance of __FilterToConsumerBinding
  {
      Filter = $Filt;
      Consumer = $Cons;                                           28
  };
拡張子 mof で保存




コマンドプロンプトからコンパ゗ル
C:¥>mofcomp.exe <mofフゔ゗ル名>
                             29
呼び出されるスクリプト(③‘’)
 Set objLocator = CreateObject("WbemScripting.SWbemLocator")
 Set objService = objLocator.ConnectServer("demo2008", "ROOT¥CIMV2", "", "")
 Set objFS = CreateObject("Scripting.FileSystemObject")

 Wscript.Echo "接続が完了しました"
 strQueryCreate = "Select * FROM __InstanceCreationEvent WITHIN 5 " & _
                         "WHERE TargetInstance ISA 'Win32_LogonSession' ‚
 Set objEventsCreation = objService.ExecNotificationQuery(strQueryCreate)
 Do
            Set CreationEvent = objEventsCreation.Nextevent
            LogonId= CreationEventTargetEvvent.TargetInstance.LogonID
            LogonType = CreationEventTargetEvent.TargetInstance.LogonType
            Select Case LogonType
                        Case 0 strLogonType = "System"
                        Case 2 strLogonType = "Interactive"
                        Case 3 strLogonType = "Network"
                        Case 4 strLogonType = "Batch"
                        Case 5 strLogonType = "Service"
                        Case 6 strLogonType = "Proxy"
                        Case 7 strLogonType = "Unlock"
                        Case 8 strLogonType = "NetworkClearText"
                        Case 9 strLogonType = "NewCredentials"
                        Case 10 strLogonType = "RemoteInteractive(TS)"
                        Case 11 strLogonType = "CachedInteractive"
                        Case 12 strLogonType = "CachedRemoteInteractive"
                        Case 13 strLogonType = "CachedUnlock"
            End Select                                                         30
strQueryLoggedOnUser = "Select * FROM Win32_LoggedOnUser"
       Set objLoggedOnUser = objService.ExecQuery(strQueryLoggedOnUser)

       For Each u in objLoggedOnUser
          If instr(u.Dependent, LogonId) Then
         arrAntecedent = Split(u.Antecedent,".")
         Set objLogFile = objFS.OpenTextFile("C:¥tmp¥demoscript¥userlog.txt",8,True)
         objLogFile.WriteLine Date & "," & Time & "," & LogonId & "," & _
                                arrAntecedent(2) & "," & strLogonType
         objLogFile.Close
         Wscript.Echo Date & "," & Time & "," & _
                          LogonId & "," & arrAntecedent(2) & "," & strLogonType
       Exit For
                     End If
       Next
Loop




                                                                                       31
まとめ

WMIはパターンを覚えれば簡単です

あたらしい使い方で作業が劇的に変化します!


          Yes, we can !




                          32
リソース
 MSDN - Windows Management Instrumentation
 http://msdn.microsoft.com/en-us/library/aa394582(VS.85).aspx

 Script Guy!
 http://www.microsoft.com/japan/technet/scriptcenter/resources/qand
 a/default.mspx




                                                                      33
34
Ad

More Related Content

What's hot (20)

初心者でもわかるActive directoryの基本
初心者でもわかるActive directoryの基本初心者でもわかるActive directoryの基本
初心者でもわかるActive directoryの基本
Sho Okada
 
Ad設計
Ad設計Ad設計
Ad設計
Naoki Abe
 
AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門
kk_Ataka
 
30分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.230分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.2
uchan_nos
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
Amazon Web Services Japan
 
[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策
[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策
[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策
Amazon Web Services Japan
 
Active Directory_グループポリシー基礎
Active Directory_グループポリシー基礎Active Directory_グループポリシー基礎
Active Directory_グループポリシー基礎
F DANKI
 
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
Amazon Web Services Japan
 
今さら聞けない! Active Directoryドメインサービス入門
今さら聞けない! Active Directoryドメインサービス入門今さら聞けない! Active Directoryドメインサービス入門
今さら聞けない! Active Directoryドメインサービス入門
Tetsuya Yokoyama
 
Sec013 その資格情報、簡
Sec013 その資格情報、簡Sec013 その資格情報、簡
Sec013 その資格情報、簡
Tech Summit 2016
 
S05 Microsoft Azure 仮想マシンでの Active Directory 活用シナリオ
S05 Microsoft Azure 仮想マシンでの Active Directory 活用シナリオS05 Microsoft Azure 仮想マシンでの Active Directory 活用シナリオ
S05 Microsoft Azure 仮想マシンでの Active Directory 活用シナリオ
Microsoft Azure Japan
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
dcubeio
 
AWS Black Belt Online Seminar 2016 AWS上でのActive Directory構築
AWS Black Belt Online Seminar 2016 AWS上でのActive Directory構築AWS Black Belt Online Seminar 2016 AWS上でのActive Directory構築
AWS Black Belt Online Seminar 2016 AWS上でのActive Directory構築
Amazon Web Services Japan
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
 
Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~
Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~
Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~
Michio Koyama
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
Kosuke Kida
 
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/FallZabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Atsushi Tanaka
 
AWS Black Belt Online Seminar AWS Direct Connect
AWS Black Belt Online Seminar AWS Direct ConnectAWS Black Belt Online Seminar AWS Direct Connect
AWS Black Belt Online Seminar AWS Direct Connect
Amazon Web Services Japan
 
無線LANデバイスについて(kernelレベル)
無線LANデバイスについて(kernelレベル) 無線LANデバイスについて(kernelレベル)
無線LANデバイスについて(kernelレベル)
Yuki Uchikoba
 
初心者でもわかるActive directoryの基本
初心者でもわかるActive directoryの基本初心者でもわかるActive directoryの基本
初心者でもわかるActive directoryの基本
Sho Okada
 
AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門
kk_Ataka
 
30分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.230分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.2
uchan_nos
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
Amazon Web Services Japan
 
[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策
[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策
[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策
Amazon Web Services Japan
 
Active Directory_グループポリシー基礎
Active Directory_グループポリシー基礎Active Directory_グループポリシー基礎
Active Directory_グループポリシー基礎
F DANKI
 
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
Amazon Web Services Japan
 
今さら聞けない! Active Directoryドメインサービス入門
今さら聞けない! Active Directoryドメインサービス入門今さら聞けない! Active Directoryドメインサービス入門
今さら聞けない! Active Directoryドメインサービス入門
Tetsuya Yokoyama
 
Sec013 その資格情報、簡
Sec013 その資格情報、簡Sec013 その資格情報、簡
Sec013 その資格情報、簡
Tech Summit 2016
 
S05 Microsoft Azure 仮想マシンでの Active Directory 活用シナリオ
S05 Microsoft Azure 仮想マシンでの Active Directory 活用シナリオS05 Microsoft Azure 仮想マシンでの Active Directory 活用シナリオ
S05 Microsoft Azure 仮想マシンでの Active Directory 活用シナリオ
Microsoft Azure Japan
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
dcubeio
 
AWS Black Belt Online Seminar 2016 AWS上でのActive Directory構築
AWS Black Belt Online Seminar 2016 AWS上でのActive Directory構築AWS Black Belt Online Seminar 2016 AWS上でのActive Directory構築
AWS Black Belt Online Seminar 2016 AWS上でのActive Directory構築
Amazon Web Services Japan
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
 
Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~
Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~
Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~
Michio Koyama
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
Kosuke Kida
 
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/FallZabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Atsushi Tanaka
 
AWS Black Belt Online Seminar AWS Direct Connect
AWS Black Belt Online Seminar AWS Direct ConnectAWS Black Belt Online Seminar AWS Direct Connect
AWS Black Belt Online Seminar AWS Direct Connect
Amazon Web Services Japan
 
無線LANデバイスについて(kernelレベル)
無線LANデバイスについて(kernelレベル) 無線LANデバイスについて(kernelレベル)
無線LANデバイスについて(kernelレベル)
Yuki Uchikoba
 

Viewers also liked (13)

Windows スクリプトセミナー 基本編
Windows スクリプトセミナー 基本編Windows スクリプトセミナー 基本編
Windows スクリプトセミナー 基本編
junichi anno
 
Power shell の基本操作と処理の自動化 v2_20120514
Power shell の基本操作と処理の自動化 v2_20120514Power shell の基本操作と処理の自動化 v2_20120514
Power shell の基本操作と処理の自動化 v2_20120514
junichi anno
 
SANS @Night There's Gold in Them Thar Package Management Databases
SANS @Night There's Gold in Them Thar Package Management DatabasesSANS @Night There's Gold in Them Thar Package Management Databases
SANS @Night There's Gold in Them Thar Package Management Databases
Phil Hagen
 
WMI - A FRONT DOOR FOR MALWARES
WMI - A FRONT DOOR FOR MALWARESWMI - A FRONT DOOR FOR MALWARES
WMI - A FRONT DOOR FOR MALWARES
Santhosh Kumar
 
Luncheon 2016-07-16 - Topic 2 - Advanced Threat Hunting by Justin Falck
Luncheon 2016-07-16 -  Topic 2 - Advanced Threat Hunting by Justin FalckLuncheon 2016-07-16 -  Topic 2 - Advanced Threat Hunting by Justin Falck
Luncheon 2016-07-16 - Topic 2 - Advanced Threat Hunting by Justin Falck
North Texas Chapter of the ISSA
 
PowerShellが苦手だった男がPowerShellを愛するようになるまで
PowerShellが苦手だった男がPowerShellを愛するようになるまでPowerShellが苦手だった男がPowerShellを愛するようになるまで
PowerShellが苦手だった男がPowerShellを愛するようになるまで
Kazuhiro Matsushima
 
AWS Simple Monthly Calculator 操作説明書
AWS Simple Monthly Calculator 操作説明書AWS Simple Monthly Calculator 操作説明書
AWS Simple Monthly Calculator 操作説明書
Amazon Web Services Japan
 
SOC2016 - The Investigation Labyrinth
SOC2016 - The Investigation LabyrinthSOC2016 - The Investigation Labyrinth
SOC2016 - The Investigation Labyrinth
chrissanders88
 
WebサービスStartUP向け AWSスケーラブルな構成例
WebサービスStartUP向け AWSスケーラブルな構成例WebサービスStartUP向け AWSスケーラブルな構成例
WebサービスStartUP向け AWSスケーラブルな構成例
Amazon Web Services Japan
 
Logs, Logs, Every Where, Nor Any Byte to Grok
Logs, Logs, Every Where, Nor Any Byte to GrokLogs, Logs, Every Where, Nor Any Byte to Grok
Logs, Logs, Every Where, Nor Any Byte to Grok
Phil Hagen
 
Abstract Tools for Effective Threat Hunting
Abstract Tools for Effective Threat HuntingAbstract Tools for Effective Threat Hunting
Abstract Tools for Effective Threat Hunting
chrissanders88
 
Computer forensics ppt
Computer forensics pptComputer forensics ppt
Computer forensics ppt
Nikhil Mashruwala
 
Guided Reading: Making the Most of It
Guided Reading: Making the Most of ItGuided Reading: Making the Most of It
Guided Reading: Making the Most of It
Jennifer Jones
 
Windows スクリプトセミナー 基本編
Windows スクリプトセミナー 基本編Windows スクリプトセミナー 基本編
Windows スクリプトセミナー 基本編
junichi anno
 
Power shell の基本操作と処理の自動化 v2_20120514
Power shell の基本操作と処理の自動化 v2_20120514Power shell の基本操作と処理の自動化 v2_20120514
Power shell の基本操作と処理の自動化 v2_20120514
junichi anno
 
SANS @Night There's Gold in Them Thar Package Management Databases
SANS @Night There's Gold in Them Thar Package Management DatabasesSANS @Night There's Gold in Them Thar Package Management Databases
SANS @Night There's Gold in Them Thar Package Management Databases
Phil Hagen
 
WMI - A FRONT DOOR FOR MALWARES
WMI - A FRONT DOOR FOR MALWARESWMI - A FRONT DOOR FOR MALWARES
WMI - A FRONT DOOR FOR MALWARES
Santhosh Kumar
 
Luncheon 2016-07-16 - Topic 2 - Advanced Threat Hunting by Justin Falck
Luncheon 2016-07-16 -  Topic 2 - Advanced Threat Hunting by Justin FalckLuncheon 2016-07-16 -  Topic 2 - Advanced Threat Hunting by Justin Falck
Luncheon 2016-07-16 - Topic 2 - Advanced Threat Hunting by Justin Falck
North Texas Chapter of the ISSA
 
PowerShellが苦手だった男がPowerShellを愛するようになるまで
PowerShellが苦手だった男がPowerShellを愛するようになるまでPowerShellが苦手だった男がPowerShellを愛するようになるまで
PowerShellが苦手だった男がPowerShellを愛するようになるまで
Kazuhiro Matsushima
 
AWS Simple Monthly Calculator 操作説明書
AWS Simple Monthly Calculator 操作説明書AWS Simple Monthly Calculator 操作説明書
AWS Simple Monthly Calculator 操作説明書
Amazon Web Services Japan
 
SOC2016 - The Investigation Labyrinth
SOC2016 - The Investigation LabyrinthSOC2016 - The Investigation Labyrinth
SOC2016 - The Investigation Labyrinth
chrissanders88
 
WebサービスStartUP向け AWSスケーラブルな構成例
WebサービスStartUP向け AWSスケーラブルな構成例WebサービスStartUP向け AWSスケーラブルな構成例
WebサービスStartUP向け AWSスケーラブルな構成例
Amazon Web Services Japan
 
Logs, Logs, Every Where, Nor Any Byte to Grok
Logs, Logs, Every Where, Nor Any Byte to GrokLogs, Logs, Every Where, Nor Any Byte to Grok
Logs, Logs, Every Where, Nor Any Byte to Grok
Phil Hagen
 
Abstract Tools for Effective Threat Hunting
Abstract Tools for Effective Threat HuntingAbstract Tools for Effective Threat Hunting
Abstract Tools for Effective Threat Hunting
chrissanders88
 
Guided Reading: Making the Most of It
Guided Reading: Making the Most of ItGuided Reading: Making the Most of It
Guided Reading: Making the Most of It
Jennifer Jones
 
Ad

Similar to Windows スクリプトセミナー WMI編 VBScript&WMI (20)

実践 NestJS
実践 NestJS実践 NestJS
実践 NestJS
Ayumi Goto
 
WF4 + WMI + PS + αで運用管理
WF4 + WMI + PS + αで運用管理WF4 + WMI + PS + αで運用管理
WF4 + WMI + PS + αで運用管理
Tomoyuki Obi
 
Lt 110205
Lt 110205Lt 110205
Lt 110205
Tomoyuki Obi
 
リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)
Mariko Goda
 
How to Make Own Framework built on OWIN
How to Make Own Framework built on OWINHow to Make Own Framework built on OWIN
How to Make Own Framework built on OWIN
Yoshifumi Kawai
 
Interact 2018:PowerShell of Microsoft SDN v2 101
Interact 2018:PowerShell of Microsoft SDN v2 101Interact 2018:PowerShell of Microsoft SDN v2 101
Interact 2018:PowerShell of Microsoft SDN v2 101
wind06106
 
Hbstudy41 auto scaling
Hbstudy41 auto scalingHbstudy41 auto scaling
Hbstudy41 auto scaling
Fujishiro Takuya
 
Ogre3d 基礎
Ogre3d 基礎Ogre3d 基礎
Ogre3d 基礎
kw
 
Ajax basic
Ajax basicAjax basic
Ajax basic
Katsuyuki Seino
 
Aws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそうAws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそう
Genta Watanabe
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
normalian
 
AWS Lambda Updates
AWS Lambda UpdatesAWS Lambda Updates
AWS Lambda Updates
Keisuke Nishitani
 
Csec52 45 Ruo Ando
Csec52 45 Ruo AndoCsec52 45 Ruo Ando
Csec52 45 Ruo Ando
Ruo Ando
 
AWSにアップロードしたファイルに認証をつける(CloudFront+Lambda@Edge)
AWSにアップロードしたファイルに認証をつける(CloudFront+Lambda@Edge)AWSにアップロードしたファイルに認証をつける(CloudFront+Lambda@Edge)
AWSにアップロードしたファイルに認証をつける(CloudFront+Lambda@Edge)
RyosukeTakeuchi8
 
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャーNode.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
Yahoo!デベロッパーネットワーク
 
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
Takashi Yahata
 
Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19
Hideki Hashizume
 
ボット開発でも DevOps! BotBuilder のテスト手法
ボット開発でも DevOps! BotBuilder のテスト手法ボット開発でも DevOps! BotBuilder のテスト手法
ボット開発でも DevOps! BotBuilder のテスト手法
Kenichiro Nakamura
 
WF4 + WMI + PS + αで運用管理
WF4 + WMI + PS + αで運用管理WF4 + WMI + PS + αで運用管理
WF4 + WMI + PS + αで運用管理
Tomoyuki Obi
 
リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)
Mariko Goda
 
How to Make Own Framework built on OWIN
How to Make Own Framework built on OWINHow to Make Own Framework built on OWIN
How to Make Own Framework built on OWIN
Yoshifumi Kawai
 
Interact 2018:PowerShell of Microsoft SDN v2 101
Interact 2018:PowerShell of Microsoft SDN v2 101Interact 2018:PowerShell of Microsoft SDN v2 101
Interact 2018:PowerShell of Microsoft SDN v2 101
wind06106
 
Ogre3d 基礎
Ogre3d 基礎Ogre3d 基礎
Ogre3d 基礎
kw
 
Aws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそうAws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそう
Genta Watanabe
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
normalian
 
Csec52 45 Ruo Ando
Csec52 45 Ruo AndoCsec52 45 Ruo Ando
Csec52 45 Ruo Ando
Ruo Ando
 
AWSにアップロードしたファイルに認証をつける(CloudFront+Lambda@Edge)
AWSにアップロードしたファイルに認証をつける(CloudFront+Lambda@Edge)AWSにアップロードしたファイルに認証をつける(CloudFront+Lambda@Edge)
AWSにアップロードしたファイルに認証をつける(CloudFront+Lambda@Edge)
RyosukeTakeuchi8
 
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
Takashi Yahata
 
Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19
Hideki Hashizume
 
ボット開発でも DevOps! BotBuilder のテスト手法
ボット開発でも DevOps! BotBuilder のテスト手法ボット開発でも DevOps! BotBuilder のテスト手法
ボット開発でも DevOps! BotBuilder のテスト手法
Kenichiro Nakamura
 
Ad

More from junichi anno (20)

V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
junichi anno
 
Microsoft Azure のセキュリティ
Microsoft Azure のセキュリティMicrosoft Azure のセキュリティ
Microsoft Azure のセキュリティ
junichi anno
 
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure ADAzure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
junichi anno
 
Azure AD による Web API の 保護
Azure AD による Web API の 保護 Azure AD による Web API の 保護
Azure AD による Web API の 保護
junichi anno
 
Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~
Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~
Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~
junichi anno
 
Azure Key Vault
Azure Key VaultAzure Key Vault
Azure Key Vault
junichi anno
 
個人情報を守るための アプリケーション設計(概要)
個人情報を守るためのアプリケーション設計(概要)個人情報を守るためのアプリケーション設計(概要)
個人情報を守るための アプリケーション設計(概要)
junichi anno
 
IoT のセキュリティアーキテクチャと実装モデル on Azure
IoT のセキュリティアーキテクチャと実装モデル on AzureIoT のセキュリティアーキテクチャと実装モデル on Azure
IoT のセキュリティアーキテクチャと実装モデル on Azure
junichi anno
 
DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計
DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計
DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計
junichi anno
 
Azureの管理権限について
Azureの管理権限について Azureの管理権限について
Azureの管理権限について
junichi anno
 
Azure Active Directory 1枚資料 20151125版
Azure Active Directory 1枚資料 20151125版Azure Active Directory 1枚資料 20151125版
Azure Active Directory 1枚資料 20151125版
junichi anno
 
リソーステンプレート入門
リソーステンプレート入門リソーステンプレート入門
リソーステンプレート入門
junichi anno
 
File Server on Azure IaaS
File Server on Azure IaaSFile Server on Azure IaaS
File Server on Azure IaaS
junichi anno
 
Windows File Service 総復習-Windows Server 2012 R2編 第1版
Windows File Service 総復習-Windows Server 2012 R2編 第1版Windows File Service 総復習-Windows Server 2012 R2編 第1版
Windows File Service 総復習-Windows Server 2012 R2編 第1版
junichi anno
 
Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...
Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...
Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...
junichi anno
 
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
junichi anno
 
Hyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理するHyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理する
junichi anno
 
Vdi を より使いやすいインフラにするためのセキュリティ設計
Vdi を より使いやすいインフラにするためのセキュリティ設計Vdi を より使いやすいインフラにするためのセキュリティ設計
Vdi を より使いやすいインフラにするためのセキュリティ設計
junichi anno
 
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
junichi anno
 
SaaS としての IDM の役割
SaaS としての IDM の役割SaaS としての IDM の役割
SaaS としての IDM の役割
junichi anno
 
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
junichi anno
 
Microsoft Azure のセキュリティ
Microsoft Azure のセキュリティMicrosoft Azure のセキュリティ
Microsoft Azure のセキュリティ
junichi anno
 
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure ADAzure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
junichi anno
 
Azure AD による Web API の 保護
Azure AD による Web API の 保護 Azure AD による Web API の 保護
Azure AD による Web API の 保護
junichi anno
 
Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~
Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~
Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~
junichi anno
 
個人情報を守るための アプリケーション設計(概要)
個人情報を守るためのアプリケーション設計(概要)個人情報を守るためのアプリケーション設計(概要)
個人情報を守るための アプリケーション設計(概要)
junichi anno
 
IoT のセキュリティアーキテクチャと実装モデル on Azure
IoT のセキュリティアーキテクチャと実装モデル on AzureIoT のセキュリティアーキテクチャと実装モデル on Azure
IoT のセキュリティアーキテクチャと実装モデル on Azure
junichi anno
 
DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計
DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計
DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計
junichi anno
 
Azureの管理権限について
Azureの管理権限について Azureの管理権限について
Azureの管理権限について
junichi anno
 
Azure Active Directory 1枚資料 20151125版
Azure Active Directory 1枚資料 20151125版Azure Active Directory 1枚資料 20151125版
Azure Active Directory 1枚資料 20151125版
junichi anno
 
リソーステンプレート入門
リソーステンプレート入門リソーステンプレート入門
リソーステンプレート入門
junichi anno
 
File Server on Azure IaaS
File Server on Azure IaaSFile Server on Azure IaaS
File Server on Azure IaaS
junichi anno
 
Windows File Service 総復習-Windows Server 2012 R2編 第1版
Windows File Service 総復習-Windows Server 2012 R2編 第1版Windows File Service 総復習-Windows Server 2012 R2編 第1版
Windows File Service 総復習-Windows Server 2012 R2編 第1版
junichi anno
 
Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...
Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...
Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...
junichi anno
 
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
junichi anno
 
Hyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理するHyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理する
junichi anno
 
Vdi を より使いやすいインフラにするためのセキュリティ設計
Vdi を より使いやすいインフラにするためのセキュリティ設計Vdi を より使いやすいインフラにするためのセキュリティ設計
Vdi を より使いやすいインフラにするためのセキュリティ設計
junichi anno
 
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
junichi anno
 
SaaS としての IDM の役割
SaaS としての IDM の役割SaaS としての IDM の役割
SaaS としての IDM の役割
junichi anno
 

Windows スクリプトセミナー WMI編 VBScript&WMI

  • 1. 第2部 応用編① WMI による Windows Server の 監視 マ゗クロソフト株式会社 エバンジェリスト 安納 順一 http://blogs.technet.com/junichia/ 1
  • 2. 本日の目的 WMIを使用して Windows Server を監視する方法を学びます ※今回は VBScript を使用します WMIとは何か? WMIを使用したスクリプト作成の基礎 WMIを使用した゗ベントの待ち合わせ WMIを使用した永続的監視の実装 スクリプトの奥深さに感動していただけるはずです 2
  • 3. WMI とは Windows Management Instrumentation WBEM/CIMに準拠 各種管理情報への共通゗ンターフェース Windows Management Serviceとして実装 Windows 2000以上のOSに標準搭載 WMIプロバ゗ダはベンダーが拡張可能 別途エージェントは一切必要なし もちろんタダ! 3
  • 4. 4
  • 5. WMI にゕクセスするには バッチフゔ゗ルから WMICコマンド(Windows XP以降) Windows Script Host から PowerShell から Visual Studio から GUIツールから WMI Admin Tools など 5
  • 6. WMIのゕーキテクチャ 管理ゕプリケーション COM/DCOM CIM Repository CIM Object Manager Object Provider COM/DCOM Object ・・・・・・・ 6
  • 7. WMIの構造 %WinDir%¥System32¥wbem 配下の mof (Managed Object Format) フゔ゗ルに定義されている Namespace によって使える Namespace Class が異なることに注意 規定のNamespaceは Class Root¥CIMV2 (例) ROOT¥COMV2 Win32_OperatingSystem Win32_NTLogEventLog ・ ・ ROOT¥Default STDREGPROV ROOT¥microsoft¥SqlServer¥ComputerManagement10 SqlService ・ 7 ・
  • 8. WMIの主役 Win32_クラス 一部抜粋 Win32_ActiveRoute Win32_ModuleTrace Win32_ComputerShutdownEvent Win32_NamedJobObject Win32_ComputerSystemEvent Win32_NTDomain Win32_ConnectionShare Win32_PingStatus Win32_CurrentTime Win32_ProcessStartTrace Win32_DeviceChangeEvent Win32_ProcessStopTrace Win32_DiskQuota Win32_Proxy Win32_GroupInDomain Win32_QuotaSetting Win32_IP4PersistedRouteTable Win32_ServerConnection Win32_IP4RouteTable Win32_SessionConnection Win32_IP4RouteTableEvent Win32_TokenGroups Win32_JobObjectStatus Win32_TokenPrivileges Win32_LoggedOnUser Win32_VolumeChangeEvent Win32_LogonSession Win32_WindowsProductActivation Win32_LogonSessionMappedDisk Win32_ControllerHasHub Win32_NetworkAdapter ・ Win32_ComputerSystem ・ ・ ・ ・ 8
  • 9. WMI Tools ~ CIM Studio ブラウザを使用して、WMIの構造、実際の゗ンスタンスを確認 クエリを発行して戻り値を確認 リモートコンピュータに接続も可能 9
  • 11. WMI Scriptingの基本形 'SWbemLocator オブジェクトの作成 Set Locator = CreateObject("WbemScripting.SWbemLocator") ‘ローカルコンピュータへの接続 Set Service = Locator.ConnectServer("", "root¥cimv2", "", "") ‘クエリーの定義(WQL:WMI Query Language) strQuery = "Select * from Win32_NetworkAdapterConfiguration " & _ "where IPEnabled = True" ‘クエリーの実行(インスタンスを取得する) Set objNet = Service.ExecQuery(strQuery) '結果の参照 For each n in objNet WScript.Echo n.caption WScript.Echo n.MACAddress Next 11
  • 12. WMIスクリプトの実行権限 リモートコンピュータに対するゕクセス権の取得 Set Service = Locator.ConnectServer(RemoteHost,Namespace,User,Password) 特殊権限の取得 Set Locator = CreateObject("WbemScripting.SWbemLocator") Set Service = Locator.ConnectServer("DC01", "root¥cimv2", "Dom¥administrator", "pass") Service.Security_.Privileges.AddAsString "SeBackupPrivilege", True Service.Security_.Privileges.AddAsString "SeSecurityPrivilege", True strQuery = "Select * from Win32_NTEventlogFile" & _ " Where LogfileName = 'Security' " Set obj = Service.ExecQuery(strQuery) For each n in obj r = n.BackupEventLog("C:¥tmp¥Security.evt") Next 12
  • 16. ゗ベントの監視 システムで発生した゗ベントをトリガーとして処理を実行 一時監視と永続的監視 以下の゗ベント監視用クラスが用意されている __InstanceCreationEvent あたらしい゗ンスタンスが作成された __InstanceModificationEvent ゗ンスタンスの属性が変更された __InstanceDeletionEvent 既存の゗ンスタンスが削除された 16
  • 17. 監視の゗メージ ゗ベントログに゗ベ WORDが起動 ントが書かれた USBデバ゗スが挿された タ゗ムゾーンが変更 ユーザーがログオン IPゕドレス変更 シャットダウン メモ帳が終了 17
  • 18. 一時的な監視例① __InstanceCreationEventによる新たに作成されたインスタンスの監視 Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objService = objLocator.ConnectServer(TargetComputer, _ "", AdminUser, AdminPass) strQueryCreate = "Select * " & _ "FROM __InstanceCreationEvent WITHIN 5 " & _ 監視したい "WHERE TargetInstance ISA 'Win32_Process' " クラス Set objEventsCreation = objService.ExecNotificationQuery(strQueryCreate) Do Set CreationEvent = objEventsCreation.Nextevent ProcessName = CreationEvent.TargetInstance.Name Win32_Procass Wscript.Echo ProcessName のプロパテゖ Loop 18
  • 19. 一時的な監視例② __InstanceModificationEventによるユーザーログオンの監視 Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objService = objLocator.ConnectServer(TargetComputer, _ ‚ROOT¥CIMV2", AdminUser, AdminPass) strQuery= "Select * " & _ "FROM __InstanceModificationEvent WITHIN 5 " & _ "WHERE TargetInstance ISA 'Win32_ComputerSystem' " Set objEventsModification = objService.ExecNotificationQuery(strQuery) Do Set ModificationEvent = objEventsModification.Nextevent UserName = ModificationEvent.TargetInstance.UserName Wscript.Echo UserName Loop 19
  • 20. そこでこんな方法… 現在のログオンセッション一覧をキャッシュ ログオンしたらセッション作成 ログオフしたらセッション削除 ログオン時に割り振られた番号 ログオンのタ゗プ(対話、ネットワーク…) 現在ログオンしているユーザーのユーザーIDとログ オンIDをキャッシュ ログオンしたユーザーID ログオン時に割り振られた番号 20
  • 21. 一時的な監視例③ __InstanceCreationEventによるユーザーログオンの監視 Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objService = objLocator.ConnectServer("demo2008", "ROOT¥CIMV2", "", "") Wscript.Echo "接続が完了しました" strQueryCreate = "Select * FROM __InstanceCreationEvent WITHIN 5 " & _ "WHERE TargetInstance ISA 'Win32_LogonSession' ‚ Set objEventsCreation = objService.ExecNotificationQuery(strQueryCreate) Do Set CreationEvent = objEventsCreation.Nextevent LogonId= CreationEvent.TargetInstance.LogonID LogonType = CreationEvent.TargetInstance.LogonType strQueryLU = "Select * " & _ ‚FROM Win32_LoggedOnUser‛ ' Where Dependent like ‘%" & LogonId & "%’‚ Set objLoggedOnUser = objService.ExecQuery(strQueryLU) For Each u in objLoggedOnUser If instr(u.Dependent, LogonId) Then Wscript.Echo u.Antecedent ユーザーID Wscript.Echo u.Dependent ログオンID End If Next Loop 21
  • 22. 一時的な監視例③‘ (③をブラッシュアップ) Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objService = objLocator.ConnectServer("demo2008", "ROOT¥CIMV2", "", "") Wscript.Echo "接続が完了しました" strQueryCreate = "Select * FROM __InstanceCreationEvent WITHIN 5 " & _ "WHERE TargetInstance ISA 'Win32_LogonSession' ‚ Set objEventsCreation = objService.ExecNotificationQuery(strQueryCreate) Do Set CreationEvent = objEventsCreation.Nextevent LogonId= CreationEvent.TargetInstance.LogonID LogonType = CreationEvent.TargetInstance.LogonType Select Case LogonType Case 0 strLogonType = "System" Case 2 strLogonType = "Interactive" Case 3 strLogonType = "Network" Case 4 strLogonType = "Batch" Case 5 strLogonType = "Service" Case 6 strLogonType = "Proxy" Case 7 strLogonType = "Unlock" Case 8 strLogonType = "NetworkClearText" Case 9 strLogonType = "NewCredentials" Case 10 strLogonType = "RemoteInteractive(TS)" Case 11 strLogonType = "CachedInteractive" Case 12 strLogonType = "CachedRemoteInteractive" Case 13 strLogonType = "CachedUnlock" End Select 22
  • 23. strQueryLoggedOnUser = "Select * " & _ "FROM Win32_LoggedOnUser" Set objLoggedOnUser = objService.ExecQuery(strQueryLoggedOnUser) For Each u in objLoggedOnUser If instr(u.Dependent, LogonId) Then arrAntecedent = Split(u.Antecedent,".") Wscript.Echo Date & "," & Time & "," & _ LogonId & "," & arrAntecedent(2) & "," & strLogonType Exit For End If Next Loop 23
  • 24. 一時的な監視例④ __InstanceDeletionEventによるユーザーログオフの監視 Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objService = objLocator.ConnectServer("demo2008", "ROOT¥CIMV2", "", "") Wscript.Echo "接続が完了しました" strQueryCreate = "Select * " & _ "FROM __InstanceDeletionEvent WITHIN 5 " & _ "WHERE TargetInstance ISA 'Win32_LogonSession' " Set objEventsDeletion = objService.ExecNotificationQuery(strQueryCreate) Do Set DeletionEvent = objEventsDeletion.Nextevent LogonId= DeletionEvent.TargetInstance.LogonID LogonType = DeletionEvent.TargetInstance.LogonType Wscript.Echo Date & "," & Time & "," & LogonId & "," & strLogonType Loop セッションの削除はログオフしてから1分程度を要する 24
  • 25. ③’と④を組み合わせると ログオンID をキーにしてログデータベースに書き込むことでサーバー を使用したユーザーの履歴を管理できる ログDB ServerName LogonID LogonType LogonDateTime LogoffDateTime Domain UserID demo2008 5443965 Interactive 2009/03/01 2009/03/01 dom anno 10:00:00 12:15:30 demo2008 6220879 TS 2009/03/01 2009/03/01 dom administrator 12:00:00 13:10:01 25
  • 27. ゗ベントコンシューマ イベントコンシューマとは…. システムで発生したイベントをトリガーに特定のアクションを 実行する機構 • ActiveScriptEventConsumer – イベントが発生したらスクリプトを実行 • LogFileEventConsumer – ゗ベントが発生したらテキストフゔ゗ルに書き込み • NTEventLogEventConsumer – ゗ベントが発生したら゗ベント • SMTPEventConsumer – ゗ベントが発生したらメール送信 • CommandLineEventConsumer – ゗ベントが発生したらコマンドを実行 システムに登録されるのでログオンする必要が無い ただし、監視できるのはローカルコンピュータ 27
  • 28. MOFフゔ゗ルによる永続的監視 ActiveScriptEventConsumerによるmofフゔ゗ルの例 #pragma namespace("¥¥¥¥.¥¥root¥¥subscription") instance of ActiveScriptEventConsumer as $Cons { Name = "LogonUserLogging"; ScriptingEngine = "VBScript"; ScriptFileName = "c:¥¥tmp¥¥demoscript¥¥wmisample08.vbs"; }; instance of __EventFilter as $Filt { Name = "LogonUser"; Query = "SELECT * FROM __InstanceCreationEvent WITHIN 5 " "WHERE TargetInstance ISA ¥"Win32_LogonSession¥" "; QueryLanguage = "WQL"; EventNamespace = "root¥¥cimv2"; }; instance of __FilterToConsumerBinding { Filter = $Filt; Consumer = $Cons; 28 };
  • 30. 呼び出されるスクリプト(③‘’) Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objService = objLocator.ConnectServer("demo2008", "ROOT¥CIMV2", "", "") Set objFS = CreateObject("Scripting.FileSystemObject") Wscript.Echo "接続が完了しました" strQueryCreate = "Select * FROM __InstanceCreationEvent WITHIN 5 " & _ "WHERE TargetInstance ISA 'Win32_LogonSession' ‚ Set objEventsCreation = objService.ExecNotificationQuery(strQueryCreate) Do Set CreationEvent = objEventsCreation.Nextevent LogonId= CreationEventTargetEvvent.TargetInstance.LogonID LogonType = CreationEventTargetEvent.TargetInstance.LogonType Select Case LogonType Case 0 strLogonType = "System" Case 2 strLogonType = "Interactive" Case 3 strLogonType = "Network" Case 4 strLogonType = "Batch" Case 5 strLogonType = "Service" Case 6 strLogonType = "Proxy" Case 7 strLogonType = "Unlock" Case 8 strLogonType = "NetworkClearText" Case 9 strLogonType = "NewCredentials" Case 10 strLogonType = "RemoteInteractive(TS)" Case 11 strLogonType = "CachedInteractive" Case 12 strLogonType = "CachedRemoteInteractive" Case 13 strLogonType = "CachedUnlock" End Select 30
  • 31. strQueryLoggedOnUser = "Select * FROM Win32_LoggedOnUser" Set objLoggedOnUser = objService.ExecQuery(strQueryLoggedOnUser) For Each u in objLoggedOnUser If instr(u.Dependent, LogonId) Then arrAntecedent = Split(u.Antecedent,".") Set objLogFile = objFS.OpenTextFile("C:¥tmp¥demoscript¥userlog.txt",8,True) objLogFile.WriteLine Date & "," & Time & "," & LogonId & "," & _ arrAntecedent(2) & "," & strLogonType objLogFile.Close Wscript.Echo Date & "," & Time & "," & _ LogonId & "," & arrAntecedent(2) & "," & strLogonType Exit For End If Next Loop 31
  • 33. リソース MSDN - Windows Management Instrumentation http://msdn.microsoft.com/en-us/library/aa394582(VS.85).aspx Script Guy! http://www.microsoft.com/japan/technet/scriptcenter/resources/qand a/default.mspx 33
  • 34. 34