Windows PowerShell 2.0 の基礎知識

                     マ゗クロソフト株式会社
             デベロッパー&プラットフォーム統括本部

                         ...
セッションの内容
• Windows PowerShell の特徴
• Windows PowerShell 詳細
  – 対話的な使い方
  – より汎用的に作っていくには
  – スクリプテゖング
  – リモート管理
• システム管理の新...
Windows PowerShell
• 新しく作り直した、管理のための強力なツール
• システム管理の自動化
• 初心者にもエキスパートにも使いやすい




コマンドラ゗ンシェル + スクリプテゖング言語 + .NET Framework
...
Windows PowerShell 2.0
• R2/Win7 搭載の PowerShell は 2.0
  – 既定で有効、削除不可
  – Server Core では既定で無効

• 強化点
  – スクリプト言語としての機能強化
  ...
PowerShell 2.0 FAQ
•   なぜ今さらコマンドラ゗ン?
    –   1回きり、1回目の作業は GUI やウゖザードで
    –   繰り返し作業、複数のサーバーに対しては PowerShell で
    –   定期的...
PowerShell のバージョン
• PowerShell 1.0
   – 2006年11月公開
   – XP SP2, Windows Server 2003 SP1, Vista: ダウンロード
   – Windows Server...
まずはここから
•   初回起動
    – Windows 7, Windows Server 2008 R2
        •   ゕクセサリ – Windows PowerShell から起動
        •   タスクバーにピン止...
Windows PowerShell の特徴 (1)
• 気軽に始められる
 – まずは、Get-Help, Get-Command, Get-Member
 – Linux/Unix の経験があれば、より身近な操作性

• 一貫したコマンドレ...
Windows PowerShell の特徴 (2)
• .NET Framework との強力な連携
  –   CLR 上で動作
  –   戻り値は常に「オブジェクト」
  –   .NET Framework のクラスを呼び出せる
  ...
オブジェクトとパ゗プ
• 文字に見えて、単なる文字ではありません。
 – 整数、浮動小数点
 – 日付、時間
 – フゔ゗ル情報、プロセス情報…

• 文字ではないので、文字列操作が不要です。
 – オブジェクトのプロパテゖとメソッド
 – パ...
今までのツールも活用できます
• すでに利用しているツールも続けて使いたい
  – PowerShell 内で利用可能
    • コマンド (com, exe)
    • COM オブジェクト

• ツールが出力するデータを活用
  – P...
セキュリテゖ
•   セキュリテゖのレベルに応じて、スクリプトの実行ポリシーを設定
    –   Set-ExecutionPolicy, Get-ExecutionPolicy
    –   設定の変更には管理者権限が必要
    –  ...
Windows の管理゗ンターフェ゗ス
• WMI: Windows Management Infrastructure
   – Windows の多くのシステム情報にゕクセス可能
   – 設定の変更も可能
• WS-Management
...
サーバー管理の新しいスタ゗ル
• Windows PowerShell の広がり
  – サーバー製品に PowerShell のスナップ゗ン
     • Exchange Server
         – 2007, 2010, Live...
Exchange Server 2007 の
                                                   GUI
管理ゕーキテクチャ

                     CLI
  セットアップ...
ウゖザードの結果をスクリプトに




                  16
管理スクリプト作成のステップ
•   まずシェルで対話的に実験

•   ユーテゖリテゖで結果を結合
    –   パ゗プ、Format-* コマンドレット
    –   ワンラ゗ナー

•   動作確認した一連のコマンドレットをスクリプト...
PowerShell V2 の新機能


      スクリプテゖング機能の強化

      多様な実行環境への対応

      GUI と PowerShell

      サーバーの役割と機能への対応
                ...
スクリプテゖング機能の強化
• 簡単に使えて、簡単に共有
• 安全に実行
• 主な新機能
 –   モジュール
 –   Advanced functions
 –   デバッグ機能
 –   トランザクション
 –   国際化
 –   言語...
多様な実行環境への対応
• どこで、どのように実行されるか
  状況に応じて柔軟な対応
 –   1台 / 複数台
 –   制限環境 / 非制限環境
 –   ユーザー入力による開始 / ゗ベントによる開始
 –   ローカル / リモート ...
統合スクリプテゖング環境
• スクリプテゖング環境 (IDE) の提供
 – PowerShell ISE (Interated Scripting Environment)




      より直感的なスクリプテゖング・実行
      ...
GUI と PowerShell
• PowerShell ベースの GUI を簡単に作成可能に

• 主な新機能
 – 新しい API
 – ランスペースのプール、スレッド制御
 – PowerShell ISE (Interated Scr...
サーバーの役割と機能への対応
• Windows Server 2008 R2
  サーバーの運用管理に本格的に活用
 –   Active Directory
 –   グループポリシー
 –   Server Manager
 –   II...
Windows Server 2008 R2 では
• 役割や機能の管理に積極的に利用
 – 直接・間接の利用
• それぞれモジュールとして提供
 – $PSHOME¥Modules
• GUI はコマンドレットを呼び出す形へ



     ...
新しい管理 UI モデル
         管理ツール UI
          (例: Active Directory
            管理センター)




            自動化
         プラットフォーム
  ...
2つの管理ツール
• サーバー マネージャー (GUI, 管理コンソール)
• Windows PowerShell (CUI)




         場面に応じて使い分け
                               26
Windows 7 では
• 既定で有効、Server と全く同じ環境

• Windows トラブルシューテゖング
  プラットフォーム
 – トラブルシュートのための共通基盤
 – c:¥windows¥diagnostics


    ...
管理は Windows 7 から
• リモートサーバー管理ツール
 – Remote Server Administration Tools for Windows 7
   PowerShell のモジュールも提供
• 複数のサーバー、タスク...
コミュニテゖ
• CodePlex で Windows PowerShell 関連の開発プロジェクトが
  進行中
  – CodePlex: http://www.codeplex.com
  – タグ名 “PowerShell” で検索
 ...
パートナー
• PowerGadgets
   – http://www.powergadgets.com
   – チャート、ゲージ、地図
   – サ゗ドバー ガジェット
• /n software inc
   – http://www....
豊富な書籍




        31
Windows PowerShell フォーラム




http://social.technet.microsoft.com/Forums/ja-JP/powershellja/threads
                       ...
まとめ
• Windows PowerShell は
  ついに運用管理のメ゗ンストリームへ

• 開発者、スクリプト開発者にも
  応える豊富な機能

• Windows PowerShell を日常管理作業に
  ぜひ取り入れてみてください...
34
参考情報
• Windows PowerShell でのスクリプテゖング
   – http://www.microsoft.com/japan/
               technet/scriptcenter/hubs/msh.msp...
テキスト処理
• オブジェクトの活用により、テキスト処理が必要な
  場面はかなり減少した
• .NET String クラス
  – Join, Split, SubString, Trim, Length, …
• 多くの .NET の型と...
出力と書式
• リスト形式、表形式、ワ゗ド、カスタムビューの
  フォーマッタが用意されている
 – Get-Command Format-*
• フォーマッタのオプションで、プロパテゖ、
  プロパテゖセット、プロパテゖの表現を指定可能
 –...
ドラ゗ブ
• さまざまなデータストゕに、共通のゕクセス方法を提供
• データストゕは「ドラ゗ブ」として見える
  – Filesystem, Registry, Alias, Certs, Env, Functions, Variables, ...
ドラ゗ブのゕクセス方法
• ドラ゗ブ名、プロバ゗ダを指定して新しいドラ゗ブをマウント
 – new-drive -Name sys32 -Provider FileSystem
     -root c:¥windows¥system32 -D...
.NET スクリプテゖング
• すべての .NET の型が利用可能 (ゕセンブリの読み込みが必要な場
  合あり)
• .NET オブジェクトの生成
  – $d = new-object System.DateTime 2007,4,20
 ...
オブジェクトユーテゖリテゖ
• Foreach-Object (繰り返し)
   – get-process |
     foreach-object {$i = 0} {$i += $_.handles} { "Total: $i"}
• ...
WMI
• Get-WmiObject
  – WMI 名前空間との゗ンターフェ゗ス
    • Get-WmiObject –list [-Namespace xx]
    • Get-WmiObject –Class win32_bios...
ログの操作
• ゗ベントログ
 – 読み取り
    • Get-EventLog
 – 書き込み
    • System.Diagnostics.EventLog クラスを利用
         – $log = New-Object –T...
COM
• VBScript と同様に管理オブジェクトにゕクセス
• New-Object で COM オブジェクトを作成
 – $fso= New-Object -Com Scripting.FileSystemObject
• プロパテゖ、...
XML
• XML はネ゗テゖブのデータ型
 – $x=[xml]"<a><b><c>TEST</c></b></a>"
• データへのゕクセス方法が用意されている
 – $x.a.b.c
• XML のプロパテゖへのゕクセスは PSBase ...
引数と戻り値
• 名前付き引数、型付き引数
 –   $args で名前なし、型指定なしの引数
 –   関数定義または param 文で引数の名前、型、既定値を設定
 –   名前の一部指定でマッチング
 –   引数の順序を考えなくてよい
...
サンプル (1)
• WMI
  – WMI のクラスリストから、文字列 Processor を含むクラスを抽出
        • gwmi -l | select-string "Processor“

  – CPU の使用率を表示
  ...
サンプル(2)
 – IE を COM オブジェクト経由で操作
   •   $ie = new-object -com internetexplorer.application
   •   $ie.visible = $true
   • ...
サンプル(3)
• ゗ベントログ
 – システムログから最新10件を取得
    • Get-EventLog system -Newest 10

 – システムログの最新1000件をソースごとに集計し
   出現回数でソート
    • G...
サンプル(4)
• Excel
   – COM オブジェクト経由で操作
      • $excel = new-object -com excel.application
      • $excel.findfile()
      • ...
サンプル(5)
• フゔ゗ルシステム監視
 – PS Eventing
   (http://www.codeplex.com/PSEventing)
    • . .¥eventhandlers.ps1 (ユーテゖリテゖの読み込み)
   ...
52
Upcoming SlideShare
Loading in...5
×

Windows PowerShell 2.0 の基礎知識

10,544

Published on

11/30 に実施したセミナーの資料です。

Published in: Technology
1 Comment
11 Likes
Statistics
Notes
  • Powershell 2.0に関する基礎知識
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
10,544
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
1
Likes
11
Embeds 0
No embeds

No notes for slide

Windows PowerShell 2.0 の基礎知識

  1. 1. Windows PowerShell 2.0 の基礎知識 マ゗クロソフト株式会社 デベロッパー&プラットフォーム統括本部 田辺 茂也 http://blogs.technet.com/stanabe 1
  2. 2. セッションの内容 • Windows PowerShell の特徴 • Windows PowerShell 詳細 – 対話的な使い方 – より汎用的に作っていくには – スクリプテゖング – リモート管理 • システム管理の新しいスタ゗ル • コミュニテゖ、パートナー 2
  3. 3. Windows PowerShell • 新しく作り直した、管理のための強力なツール • システム管理の自動化 • 初心者にもエキスパートにも使いやすい コマンドラ゗ンシェル + スクリプテゖング言語 + .NET Framework 3
  4. 4. Windows PowerShell 2.0 • R2/Win7 搭載の PowerShell は 2.0 – 既定で有効、削除不可 – Server Core では既定で無効 • 強化点 – スクリプト言語としての機能強化 – リモーテゖング – グラフゖカル PowerShell • ISE: Integrated Scripting Environment – より高いセキュリテゖ – R2 の役割管理モジュール 管理の標準ツールへ 4
  5. 5. PowerShell 2.0 FAQ • なぜ今さらコマンドラ゗ン? – 1回きり、1回目の作業は GUI やウゖザードで – 繰り返し作業、複数のサーバーに対しては PowerShell で – 定期的なジョブは PowerShell で – コマンドプロンプト:操作の統一性、テキストベースの入出力、 ツール間の連携性、スクリプテゖングの容易さ • Windows XP や 2003, Vista, 2008 への対応は? – ダウンロードセンターにて公開 • http://support.microsoft.com/kb/968929/ja-jp • XP SP3, Vistat SP1, WS03 SP2, WS08 SP2 • 今後 PowerShell のスキルは必須? – 必須ではありませんが、かなりラクできます • VBScript、コマンドプロンプトはなくなるの? – 引き続きサポートされます 5
  6. 6. PowerShell のバージョン • PowerShell 1.0 – 2006年11月公開 – XP SP2, Windows Server 2003 SP1, Vista: ダウンロード – Windows Server 2008: 機能の追加 • PowerShell 2.0 – Windows 7, Windows Server 2008 R2 標準装備 • 既定で有効。無効化、削除はできない • Server Core では既定で無効 • PowerShell 1.0 を置き換え (上位互換) – その他の OS 向けにダウンロードセンターにて公開 • Windows Server 2003 SP2, Windows Server 2008 SP2 • Windows XP SP3, Windows Vista SP1 • http://support.microsoft.com/kb/968929/ja-jp • Get-Host でバージョン取得 6
  7. 7. まずはここから • 初回起動 – Windows 7, Windows Server 2008 R2 • ゕクセサリ – Windows PowerShell から起動 • タスクバーにピン止めしておきましょう • Server Core では機能追加 – Windows XP, Windows Server 2003, 2008 • ダウンロードセンターからダウンロード • ゗ンストール • 試してみよう – CUI, ISE を立ち上げてみる – Get-help, Get-Command してみる – Get-help about_* を見てみる • 設定しよう – Set-ExecutionPolicy # スクリプトの実行ポリシー – Notepad $profile # 自動設定プロフゔ゗ル – Set-WSManQuickConfig # リモーテゖングの設定 7
  8. 8. Windows PowerShell の特徴 (1) • 気軽に始められる – まずは、Get-Help, Get-Command, Get-Member – Linux/Unix の経験があれば、より身近な操作性 • 一貫したコマンドレット体系 – 標準的な名前付けパターン • [動詞]-[名詞] (例: get-help, get-command, get-member) – パラメーターの指定方法 – 共通のパラメーター ノンプログラマにも優しいツール 8
  9. 9. Windows PowerShell の特徴 (2) • .NET Framework との強力な連携 – CLR 上で動作 – 戻り値は常に「オブジェクト」 – .NET Framework のクラスを呼び出せる – 使えば使うほどに効いてくる特長 • データへのゕクセスを共通化 – ドラ゗ブに割り当て – ドラ゗ブレターだけでなく、文字列を使用可 • サードパーテゖ、コミュニテゖによるサポート – スクリプトやツールが充実 高度なニーズにも応えるパワー 9
  10. 10. オブジェクトとパ゗プ • 文字に見えて、単なる文字ではありません。 – 整数、浮動小数点 – 日付、時間 – フゔ゗ル情報、プロセス情報… • 文字ではないので、文字列操作が不要です。 – オブジェクトのプロパテゖとメソッド – パ゗プにはオブジェクトが流れています • パ゗プ、プロセス、変数が簡単に扱えます。 – 例:テキストフゔ゗ルを読み込んで、変数にセット – 変数の内容をフゔ゗ルに保存 オブジェクトの使いこなしが鍵 10
  11. 11. 今までのツールも活用できます • すでに利用しているツールも続けて使いたい – PowerShell 内で利用可能 • コマンド (com, exe) • COM オブジェクト • ツールが出力するデータを活用 – PowerShell でデータを再利用できるように加工 • PowerShell で安全なテキスト解析 • PowerShell でラップすることで拡張可能 • .NET Framework のクラスを直接呼び出せる – プログラミングの経験を活用 段階的な移行が可能 11
  12. 12. セキュリテゖ • セキュリテゖのレベルに応じて、スクリプトの実行ポリシーを設定 – Set-ExecutionPolicy, Get-ExecutionPolicy – 設定の変更には管理者権限が必要 – グループポリシーで設定可能 • 5段階の実行ポリシー – Restricted: 制限つき (オペレーターモード) • ゗ンストール時の既定。対話形式のみ、スクリプトは実行できない – AllSigned: 署名 • スクリプトは、信頼された発行元による署名が必要 – RemoteSigned: リモートの署名 • "゗ンターネットゾーン" のスクリプトは信頼された発行元による署名が必要 – Unrestricted: 無制限 • すべてのスクリプトを実行可能、リモートのスクリプトについては常に警告 – Bypass: バ゗パス • すべてのスクリプトを実行可能、警告なし – Undefined: 設定したポリシーのクリゕ • スコープ – MachinePolicy, UserPolicy, Process, CurrentUser, LocalMachine, データセンターでも安全 12
  13. 13. Windows の管理゗ンターフェ゗ス • WMI: Windows Management Infrastructure – Windows の多くのシステム情報にゕクセス可能 – 設定の変更も可能 • WS-Management – システム管理のための Web Service – HTTP, HTTPS (5985, 5986) 経由でリモートゕクセス – リモートの WMI にゕクセス リモート PowerShell WS-Man WMI API WS-Man HTTP(s) WMI / プロバ゗ダ ローカル 13
  14. 14. サーバー管理の新しいスタ゗ル • Windows PowerShell の広がり – サーバー製品に PowerShell のスナップ゗ン • Exchange Server – 2007, 2010, Live@Edu • System Center – Operations Manager 2007 – Virtual Machine Manager 2007 – Data Protection Manager 2007 • Windows Server 2008 R2 • Windows 7 • Windows Azure – 複数のスナップ゗ンを読み込んでシームレスな管理 • GUI と CUI の連続性 – 1度きりの作業、1回目の作業は GUI (ウゖザード) – 繰り返し作業、自動化は CUI (スクリプト) 14
  15. 15. Exchange Server 2007 の GUI 管理ゕーキテクチャ CLI セットアップ WinForm WinForm ADO.NET 管理インターフェイス PowerShell データプロバイダ PowerShell エンジン Exchange コマンドレット 設定情報へのアクセス MAPI レジストリ Meta Store Active base Directory 15
  16. 16. ウゖザードの結果をスクリプトに 16
  17. 17. 管理スクリプト作成のステップ • まずシェルで対話的に実験 • ユーテゖリテゖで結果を結合 – パ゗プ、Format-* コマンドレット – ワンラ゗ナー • 動作確認した一連のコマンドレットをスクリプトに – Start-Transcript による記録も便利 • 変数、パラメータなどを導入して汎用化 – 関数に書き換え – $args, param() – オブジェクトを出力とする、小さなスクリプト • 実運用レベルのスクリプトに改良 – エラー処理 – ログの作成 – コード署名 • 社内やコミュニテゖで共有 17
  18. 18. PowerShell V2 の新機能 スクリプテゖング機能の強化 多様な実行環境への対応 GUI と PowerShell サーバーの役割と機能への対応 18
  19. 19. スクリプテゖング機能の強化 • 簡単に使えて、簡単に共有 • 安全に実行 • 主な新機能 – モジュール – Advanced functions – デバッグ機能 – トランザクション – 国際化 – 言語の拡張 1.0 で求められていた機能を追加 19
  20. 20. 多様な実行環境への対応 • どこで、どのように実行されるか 状況に応じて柔軟な対応 – 1台 / 複数台 – 制限環境 / 非制限環境 – ユーザー入力による開始 / ゗ベントによる開始 – ローカル / リモート (1:1, 1:*, *:1) – 同期 / 非同期 • 主な新機能 – リモート実行 – バックグラウンドジョブ – ゗ベンテゖング – 制限実行環境 さまざまな用途シナリオに対応 20
  21. 21. 統合スクリプテゖング環境 • スクリプテゖング環境 (IDE) の提供 – PowerShell ISE (Interated Scripting Environment) より直感的なスクリプテゖング・実行 21
  22. 22. GUI と PowerShell • PowerShell ベースの GUI を簡単に作成可能に • 主な新機能 – 新しい API – ランスペースのプール、スレッド制御 – PowerShell ISE (Interated Scripting Environment) – Out-GridView 実行エンジンとして PowerShell を活用 22
  23. 23. サーバーの役割と機能への対応 • Windows Server 2008 R2 サーバーの運用管理に本格的に活用 – Active Directory – グループポリシー – Server Manager – IIS – リモートデスクトップサービス – フェールオーバークラスタリング – Best Practices – その他… 共通管理基盤としての PowerShell 23
  24. 24. Windows Server 2008 R2 では • 役割や機能の管理に積極的に利用 – 直接・間接の利用 • それぞれモジュールとして提供 – $PSHOME¥Modules • GUI はコマンドレットを呼び出す形へ 管理スタ゗ルが変わっていきます 24
  25. 25. 新しい管理 UI モデル 管理ツール UI (例: Active Directory 管理センター) 自動化 プラットフォーム (例: AD コマンドレット) オブジェクトモデル (Active Directory) GUI と CUI で同様の作業が可能に 25
  26. 26. 2つの管理ツール • サーバー マネージャー (GUI, 管理コンソール) • Windows PowerShell (CUI) 場面に応じて使い分け 26
  27. 27. Windows 7 では • 既定で有効、Server と全く同じ環境 • Windows トラブルシューテゖング プラットフォーム – トラブルシュートのための共通基盤 – c:¥windows¥diagnostics クラ゗ゕントにも標準搭載 27
  28. 28. 管理は Windows 7 から • リモートサーバー管理ツール – Remote Server Administration Tools for Windows 7 PowerShell のモジュールも提供 • 複数のサーバー、タスクベースの管理 • ヘッドレス管理へ 日常の管理作業はクラ゗ゕントからリモートで 28
  29. 29. コミュニテゖ • CodePlex で Windows PowerShell 関連の開発プロジェクトが 進行中 – CodePlex: http://www.codeplex.com – タグ名 “PowerShell” で検索 – PowerShell Community Extensions • http://www.codeplex.com/PowerShellCX • フゔ゗ルの圧縮、クリップボードへのゕクセス、ゕセンブリの取扱いなどの コマンドレット • ゕセンブリキャッシュ、LDAP、IE7のRSSフゖードにゕクセスするプロバ゗ダ • その他ユーテゖリテゖ関数、フゖルター – PowerShell Remoting • http://www.codeplex.com/powershellremoting • クラ゗ゕント・サーバー型のリモートシェル – Windows Installer PowerShell Extensions • http://www.codeplex.com/psmsi • MSI フゔ゗ルを取り扱う 29
  30. 30. パートナー • PowerGadgets – http://www.powergadgets.com – チャート、ゲージ、地図 – サ゗ドバー ガジェット • /n software inc – http://www.nsoftware.com/powershell/ – NetCmdlets – ネットワーク関連のコマンドレット • SNMP, SSH, LDAP, FTP, Syslog, Jabber, DNS, MIME, UUEncode, Zip … – PowerShell Server • Quest Software, FullArmor … 30
  31. 31. 豊富な書籍 31
  32. 32. Windows PowerShell フォーラム http://social.technet.microsoft.com/Forums/ja-JP/powershellja/threads 32
  33. 33. まとめ • Windows PowerShell は ついに運用管理のメ゗ンストリームへ • 開発者、スクリプト開発者にも 応える豊富な機能 • Windows PowerShell を日常管理作業に ぜひ取り入れてみてください! 33
  34. 34. 34
  35. 35. 参考情報 • Windows PowerShell でのスクリプテゖング – http://www.microsoft.com/japan/ technet/scriptcenter/hubs/msh.mspx • TechNet バーチャルラボ 「Windows PowerShell 入門」(V1) – http://www.microsoft.com/japan/ technet/traincert/virtuallab/default.mspx • TechNet Forum: Windows PowerShell フォーラム – http://social.technet.microsoft.com/ Forums/ja-JP/powershellja/threads • 製品ページ – http://www.microsoft.com/japan/windowsserver2008/ technologies/powershell.mspx 35
  36. 36. テキスト処理 • オブジェクトの活用により、テキスト処理が必要な 場面はかなり減少した • .NET String クラス – Join, Split, SubString, Trim, Length, … • 多くの .NET の型と変換を利用可能 – [datetime], [URI], ENUMS, … • 豊富な string オペレーター – +, *, -f, -replace, -match, -like, -eq, -ne, -gt, -ge, -lt, -le – 暗黙、明示的なキャスト、強制 • 正規表現を使ったマッチング – Select-String 36
  37. 37. 出力と書式 • リスト形式、表形式、ワ゗ド、カスタムビューの フォーマッタが用意されている – Get-Command Format-* • フォーマッタのオプションで、プロパテゖ、 プロパテゖセット、プロパテゖの表現を指定可能 – get-process |format-table name,id,handlecount – get-process |format-table Configuration -auto – get-process |format-table name,@{ Label="File"; Expression= {$_.mainmodule.filename} } – get-process |format-list name,*size64 • XML フゔ゗ルでフォーマット拡張を定義 – Update-FormatData My.Format.ps1xml 37
  38. 38. ドラ゗ブ • さまざまなデータストゕに、共通のゕクセス方法を提供 • データストゕは「ドラ゗ブ」として見える – Filesystem, Registry, Alias, Certs, Env, Functions, Variables, … – get-childitem HKLM:¥SOFTWARE¥Microsoft • 「ドラ゗ブ」はさまざまな情報を含む名前空間 – Item, ChildItem, Content, Property, ACL, … • 共通のコマンドレットでゕクセス可能 また alias が既定で設定されている Get-ChildItem dir ls Get-Cwd cd pwd Get-Content type cat New-item –type directory mkdir mkdir Set-Location cd cd 38
  39. 39. ドラ゗ブのゕクセス方法 • ドラ゗ブ名、プロバ゗ダを指定して新しいドラ゗ブをマウント – new-drive -Name sys32 -Provider FileSystem -root c:¥windows¥system32 -Description "PSH SOURCES" – set-location sys32:¥drivers • ワ゗ルドカード – get-childitem *¥*¥*.doc – get-childitem [a-f]*[tc] • さまざまなプロバ゗ダで共通のゕクセス方法 – get-childitem ¥logs –Include *.txt –Exclude A* -Recurse -Force • 特定のプロバ゗ダで有効な拡張 – get-childitem Cert: -Recurse –CodeSigning • すべてのプロバ゗ダでタブ補完 – get-childitem HKLM:¥So<TAB>¥Mi<TAB> => HLKM:¥Software¥Microsoft 39
  40. 40. .NET スクリプテゖング • すべての .NET の型が利用可能 (ゕセンブリの読み込みが必要な場 合あり) • .NET オブジェクトの生成 – $d = new-object System.DateTime 2007,4,20 – [DateTime] "2007/4/20" • プロパテゖ、メソッドの確認 – [DateTime] "2007/4/20" | get-member – [datetime].Getmembers() | where-object {$_.isStatic} | format-table name • プロパテゖ、メソッドへのゕクセス – プロパテゖ、メソッド • $d.DayOfWeek • $d.AddMonths(6) – スタテゖックメソッド • [DateTime]::Now • [Math]::Sqrt(16) 40
  41. 41. オブジェクトユーテゖリテゖ • Foreach-Object (繰り返し) – get-process | foreach-object {$i = 0} {$i += $_.handles} { "Total: $i"} • Group-Object (グループ化) – get-process | group-object Company • Measure-Object (集計) – get-process | measure-object Handles –Sum –Ave –Min –Max • Select-Object (選択) – get-process | select-object name,id –expand modules – get-process | sort-object handles |Select –first 10 • Where-Object (条件抽出) – get-process | where-object {$_.handles –ge 500} 41
  42. 42. WMI • Get-WmiObject – WMI 名前空間との゗ンターフェ゗ス • Get-WmiObject –list [-Namespace xx] • Get-WmiObject –Class win32_bios – リモート接続可能 42
  43. 43. ログの操作 • ゗ベントログ – 読み取り • Get-EventLog – 書き込み • System.Diagnostics.EventLog クラスを利用 – $log = New-Object –Type System.Diagnostics.EventLog -ArgumentList System $log.source = “日次処理” $log.WriteEntry(“正常に終了しました”, “Information”) • エラー時にも゗ベントを書き込み – ゗ベントにタスクを添付して、復帰処理 • その他のログ – IIS • 文字列処理 • LogParser 43
  44. 44. COM • VBScript と同様に管理オブジェクトにゕクセス • New-Object で COM オブジェクトを作成 – $fso= New-Object -Com Scripting.FileSystemObject • プロパテゖ、メソッドの確認 – $fso | get-member • プロパテゖ、メソッドへのゕクセス – $fso.GetDrive("C:") – $fso.VolumeName = "System Drive" • パ゗プでつないで利用 – $word = new-object –ComObject Word.Application – $word.RecentFiles | sort-object name | format-table name, index,path -auto 44
  45. 45. XML • XML はネ゗テゖブのデータ型 – $x=[xml]"<a><b><c>TEST</c></b></a>" • データへのゕクセス方法が用意されている – $x.a.b.c • XML のプロパテゖへのゕクセスは PSBase 経由で – $x.a.PSBase.innerXml • XML メソッドへのゕクセス – $x.a.SelectNodes("//c") 45
  46. 46. 引数と戻り値 • 名前付き引数、型付き引数 – $args で名前なし、型指定なしの引数 – 関数定義または param 文で引数の名前、型、既定値を設定 – 名前の一部指定でマッチング – 引数の順序を考えなくてよい – より安全なスクリプト • 戻り値 – パ゗プに出力されたものが戻り値になる – デバッグ情報やユーザーへの情報はコンソールへ 46
  47. 47. サンプル (1) • WMI – WMI のクラスリストから、文字列 Processor を含むクラスを抽出 • gwmi -l | select-string "Processor“ – CPU の使用率を表示 • gwmi Win32_PerfFormattedData_PerfOS_Processor – CPU の使用率から、コゕの番号、使用率(%)のみ表示 • gwmi Win32_PerfFormattedData_PerfOS_Processor | format-table name,PercentProcessorTime –auto – 上記の出力を HTML に変換 • gwmi Win32_PerfFormattedData_PerfOS_Processor | select name,PercentProcessorTime | ConvertTo-Html 47
  48. 48. サンプル(2) – IE を COM オブジェクト経由で操作 • $ie = new-object -com internetexplorer.application • $ie.visible = $true • $ie.navigate("about:blank") • $ie.document.body.innertext = "a" – CPU の使用率を IE に表示させ、1秒ごとに更新 • while($true){$ie.document.body.innerhtml = (gwmi Win32_PerfFormattedData_PerfOS_Processor | select name,PercentProcessorTime | ConvertTo-Html ); sleep 1} 48
  49. 49. サンプル(3) • ゗ベントログ – システムログから最新10件を取得 • Get-EventLog system -Newest 10 – システムログの最新1000件をソースごとに集計し 出現回数でソート • Get-EventLog system -Newest 1000 | Group-Object Source | Sort-Object Count – PowerGadgets (http://powergadgets.com) でグラフ化 • Get-EventLog system -Newest 1000 | Group-Object Source | Sort-Object Count | Out-Chart 49
  50. 50. サンプル(4) • Excel – COM オブジェクト経由で操作 • $excel = new-object -com excel.application • $excel.findfile() • $excel.worksheets.item(1).cells.item(1,1) – ExcelPackage で操作(http://www.codeplex.com/ExcelPackage) • [Reflection.Assembly]::LoadFrom( "$pwd¥excelpackage.dll") | out-null • $ep = New-Object OfficeOpenXml.ExcelPackage (dir vbs2ps.xlsx) • foreach ($i in 1..5) {$ep.workbook.worksheets[1].Cell($i,1).value} 50
  51. 51. サンプル(5) • フゔ゗ルシステム監視 – PS Eventing (http://www.codeplex.com/PSEventing) • . .¥eventhandlers.ps1 (ユーテゖリテゖの読み込み) • .¥filesystemwatcher.ps1 • または – $fsw = new-object system.io.filesystemwatcher – $fsw.Path = "c:¥temp“ – $fsw.EnableRaisingEvents = $true – add-eventhandler (get-variable fsw) changed { param($var, $name) "changed!" } – do-events # this will block until ctrl+C is hit 51
  52. 52. 52

×