Windows PowerShellクックブック

[cover photo]
TOPICS
クックブック
発行年月日
PRINT LENGTH
630
ISBN
978-4-87311-382-1
原書
Windows PowerShell Cookbook
FORMAT
Print PDF
Ebook
4,400円
Ebookを購入する
Print
4,400円

本書はPowerShellを使ってさまざまな処理を行うための方法を解説します。「PowerShellの基本」「一般的なタスク」「管理者タスク」という3部構成で、様々な場面で発生しうる実際的な問題を260例集め、それぞれに解決法を示します。 「一般的なタスク」では、対話的なシェルの利用法、パイプラインの基礎とオブジェクトの概念、スクリプト言語としての特徴などを解説します。「管理者タスク」では、実践的なレシピを網羅。システム管理として、Windowsレジストリ、イベントログ、プロセスなど管理方法を扱い、エンタープライズ管理として、WMI、Active Directory、その他エンタープライズ指向のタスクなどを扱います。またExchange Server 2007とOperations Manager 2007管理者のためのタスクもカバーします。 PowerShell開発チームに初期から携ってきた著者が執筆した本書は、PowerShellをマスターしたい技術者必携の一冊です。

目次

目次
まえがき
はじめに

ガイドツアー Windows PowerShell
	はじめに
	インタラクティブシェル
	構造化されたコマンド(コマンドレット)
	オブジェクトのディープな統合
	ファーストクラスユーザーであるシステム管理者
	組み合わせ可能なコマンド
	自分自身から自分を守るためのテクニック
	共通の発見コマンド
	ユビキタススクリプティング
	アドホックな開発
	テクノロジの架け橋
	プロバイダを通じた名前空間の移動
	さらに詳しく

I部	PowerShellの基本
1章	Windows PowerShellインタラクティブシェル
	はじめに
	レシピ1.1	プログラム、スクリプト、既存のツールを実行する
	レシピ1.2	PowerShellコマンドを実行する
	レシピ1.3	シェル、プロファイル、プロンプトをカスタマイズする
	レシピ1.4	コマンドを見つけてタスクを遂行する
	レシピ1.5	コマンドに関するヘルプを取得する
	レシピ1.6	プログラム:ヘルプからテキストを検索する
	レシピ1.7	PowerShellの外からPowerShellスクリプトを呼び出す
	レシピ1.8	プログラム:バッチファイルによって設定された環境変数の変更を保持する
	レシピ1.9	システム日時を取得する
	レシピ1.10	最後に実行したコマンドのステータスを確認する
	レシピ1.11	コマンドの継続時間を測定する
	レシピ1.12	シェルをカスタマイズして生産性を上げる
	レシピ1.13	プログラム:よく使うコマンドのエイリアスを知る
	レシピ1.14	コンソール履歴へのアクセスとその管理
	レシピ1.15	コマンドの出力をファイルに格納する
	レシピ1.16	情報をファイルの末尾に追加する
	レシピ1.17	シェルセッションのトランスクリプトを記録する
	レシピ1.18	項目の各種プロパティをリストとして表示する
	レシピ1.19	項目のプロパティを表として表示する
	レシピ1.20	コマンドのエラー出力を管理する
	レシピ1.21	デバッグ、詳細表示、進行状況の出力を構成する
	レシピ1.22	追加のスナップインを使ってシェルを拡張する
	レシピ1.23	コンソールファイルを使用してスナップインのセットをロードして保存する

2章	パイプライン
	はじめに
	レシピ2.1	リストまたはコマンド出力の項目をフィルタリングする
	レシピ2.2	プログラム:ほとんどのWhere-Objectフィルタを簡素化する
	レシピ2.3	プログラム:オブジェクトのリストをインタラクティブにフィルタリングする
	レシピ2.4	リストまたはコマンド出力の項目を処理する
	レシピ2.5	大量のデータを扱うタスクを自動化する

3章	変数とオブジェクト
	はじめに
	レシピ3.1	情報を変数に格納する
	レシピ3.2	環境変数にアクセスする
	レシピ3.3	変数やその他の項目に関するアクセスとスコープを制御する
	レシピ3.4	.NETオブジェクトを利用する
	レシピ3.5	.NETオブジェクトのインスタンスを作成する
	レシピ3.6	プログラム:ジェネリック型のオブジェクトのインスタンスを作成する
	レシピ3.7	長いクラス名を入力する労力を減らす
	レシピ3.8	COMオブジェクトを使用する
	レシピ3.9	型とオブジェクトについて知る
	レシピ3.10	型とオブジェクトに関する詳細なドキュメントを得る
	レシピ3.11	カスタムのメソッドやプロパティをオブジェクトに追加する
	レシピ3.12	カスタムのメソッドやプロパティを型に追加する

4章	ループ処理とフロー制御
	はじめに
	レシピ4.1	比較演算子と論理演算子を使って判断を下す
	レシピ4.2	条件ステートメントを使用してスクリプトの流れを制御する
	レシピ4.3	大規模な条件ステートメントをスイッチを使って管理する
	レシピ4.4	ループを使って操作を繰り返す
	レシピ4.5	一時停止または遅延を追加する

5章	文字列と非構造化テキスト
	はじめに
	レシピ5.1	文字列を作成する
	レシピ5.2	複数行の文字列または書式設定された文字列を作成する
	レシピ5.3	文字列内に特殊文字を含める
	レシピ5.4	動的な情報を文字列に挿入する
	レシピ5.5	文字列内に動的な情報が含まれないようにする
	レシピ5.6	書式設定された情報を文字列に配置する
	レシピ5.7	文字列からテキストまたはパターンを検索する
	レシピ5.8	文字列内のテキストを置換する
	レシピ5.9	文字列を大文字/小文字に変換する
	レシピ5.10	文字列を取り除く
	レシピ5.11	出力のために日付形式を設定する
	レシピ5.12	プログラム:テキストストリームをオブジェクトに変換する
	レシピ5.13	大きなレポートやテキストストリームを生成する

6章	計算と算術
	はじめに
	レシピ6.1	簡単な計算を実行する
	レシピ6.2	複雑な計算を実行する
	レシピ6.3	リストの統計プロパティを測定する
	レシピ6.4	数字を2進数として扱う
	レシピ6.5	管理用の定数を使って算術を簡素化する
	レシピ6.6	基数間で数字を変換する

II部	一般的なタスク
7章	単純なファイル
	はじめに
	レシピ7.1	ファイルの中身を取得する
	レシピ7.2	ファイルからテキストまたはパターンを検索する
	レシピ7.3	テキストベースのログファイルの解析と管理
	レシピ7.4	バイナリファイルの解析と管理
	レシピ7.5	一時ファイルを作成する
	レシピ7.6	ファイル内でテキストの検索/置換を行う

8章	構造化ファイル
	はじめに
	レシピ8.1	XMLファイルの情報にアクセスする
	レシピ8.2	XMLファイルに対してXPathクエリを実行する
	レシピ8.3	XMLファイルのデータを修正する
	レシピ8.4	構造化データを簡単にインポート/エクスポートする
	レシピ8.5	コマンドの出力をCSVファイルに格納する
	レシピ8.6	CSVファイルから構造化データをインポートする
	レシピ8.7	Excelを使ってコマンド出力を管理する

9章	インターネット対応スクリプト
	はじめに
	レシピ9.1	インターネットからファイルをダウンロードする
	レシピ9.2	インターネットからWebページをダウンロードする
	レシピ9.3	プログラム:Get-PageUrls
	レシピ9.4	プログラム:Connect-WebService
	レシピ9.5	コマンド出力をWebページとしてエクスポートする
	レシピ9.6	プログラム:電子メールを送信する
	レシピ9.7	プログラム:インターネットプロトコルとのやり取り

10章	コードの再利用
	はじめに
	レシピ10.1	スクリプトを記述する
	レシピ10.2	関数を記述する
	レシピ10.3	スクリプトブロックを記述する
	レシピ10.4	スクリプト、関数、スクリプトブロックからデータを返す
	レシピ10.5	共通関数をライブラリ内に配置する
	レシピ10.6	スクリプト、関数、スクリプトブロックの引数にアクセスする
	レシピ10.7	パイプライン入力にアクセスする
	レシピ10.8	コマンドレットのキーワードを使ってパイプライン指向のスクリプトを記述する
	レシピ10.9	パイプライン指向の関数を記述する

11章	リスト、配列、ハッシュテーブル
	はじめに
	レシピ11.1	項目の配列またはリストを作成する
	レシピ11.2	ジャグ配列または多次元配列を作成する
	レシピ11.3	配列の要素にアクセスする
	レシピ11.4	配列の個々の要素にアクセスする
	レシピ11.5	項目の配列またはリストをソートする
	レシピ11.6	配列に項目が含まれているかどうかを知る
	レシピ11.7	2つの配列を結合する
	レシピ11.8	ある値とマッチする項目を配列から検索する
	レシピ11.9	配列から要素を削除する
	レシピ11.10	ある値より大きい(または小さい)項目を配列から検索する
	レシピ11.11	配列に関する高度なタスクにArrayListクラスを使用する
	レシピ11.12	ハッシュテーブル(連想配列)を作成する
	レシピ11.13	キーまたは値でハッシュテーブルをソートする

12章	ユーザーとの対話
	はじめに
	レシピ12.1	1行のユーザー入力を読み取る
	レシピ12.2	ユーザーが入力したキーを読み取る
	レシピ12.3	プログラム:ユーザーにメニューを表示する
	レシピ12.4	ユーザーにメッセージと出力を表示する
	レシピ12.5	実行時間の長いタスクの進行状況を表示する
	レシピ12.6	文化圏を意識したスクリプトを記述する
	レシピ12.7	プログラム:代替の文化圏設定を使ってスクリプトブロックを呼び出す
	レシピ12.8	ホストのユーザーインターフェイスの機能にアクセスする
	レシピ12.9	プログラム:グラフィカルユーザーインターフェイスをスクリプトに追加する

13章	トレースとエラー管理
	はじめに
	レシピ13.1	コマンドから発生するエラーを表示する
	レシピ13.2	警告、エラー、終了するエラーを処理する
	レシピ13.3	警告、エラー、終了するエラーを出力する
	レシピ13.4	スクリプトをデバッグする
	レシピ13.5	スクリプトやコマンドの詳細なトレースを収集する
	レシピ13.6	プログラム:スクリプトのパフォーマンスプロファイルを分析する

14章	実行環境の認識
	はじめに
	レシピ14.1	環境変数の表示と修正
	レシピ14.2	コマンドの呼び出しに関する情報にアクセスする
	レシピ14.3	プログラム:$myInvocation変数を調べる
	レシピ14.4	スクリプトの名前を知る
	レシピ14.5	スクリプトの場所を知る
	レシピ14.6	システムパスの場所を知る
	レシピ14.7	プログラム:[スタート]メニューを検索する
	レシピ14.8	現在の場所を取得する
	レシピ14.9	各コンポーネントからファイルパスを安全に作成する
	レシピ14.10	PowerShellのグローバル環境を取り扱う

15章	Windows PowerShellの適用範囲を広げる
	はじめに
	レシピ15.1	Windows Management Instrumentationデータにアクセスする
	レシピ15.2	プログラム:WMIフィルタで利用可能なプロパティを知る
	レシピ15.3	プログラム:WMIクラスを検索する
	レシピ15.4	.NETを使って高度なWMIタスクを実行する
	レシピ15.5	VBScript WMIスクリプトをPowerShellに変換する
	レシピ15.6	COMスクリプティングインターフェイスを使ってプログラムを自動化する
	レシピ15.7	プログラム:SQLデータソースに問い合わせる
	レシピ15.8	Windowsパフォーマンスカウンタにアクセスする
	レシピ15.9	プログラム:ネイティブなWindows API呼び出しを実行する
	レシピ15.10	プログラム:インラインC#をPowerShellスクリプトに追加する
	レシピ15.11	.NET SDKライブラリにアクセスする
	レシピ15.12	独自のPowerShellコマンドレットを作成する
	レシピ15.13	PowerShellスクリプティングを自分のプログラムに追加する

16章	セキュリティとスクリプト署名
	はじめに
	レシピ16.1	実行ポリシーを通じてスクリプティングを有効にする
	レシピ16.2	PowerShellスクリプトファイルまたは書式設定ファイルに署名する
	レシピ16.3	プログラム:自己証明書を作成する
	レシピ16.4	エンタープライズでPowerShellセキュリティを管理する
	レシピ16.5	PowerShellスクリプトのデジタル署名を確認する
	レシピ16.6	機密情報を安全に扱う
	レシピ16.7	ユーザー名とパスワードを安全に要求する
	レシピ16.8	プログラム:別のユーザーとしてプロセスを開始する
	レシピ16.9	資格情報をディスクに安全に格納する
	レシピ16.10	ユーザーおよびマシンの証明書にアクセスする
	レシピ16.11	プログラム:証明書ストアを検索する

III部	管理者タスク
17章	ファイルとディレクトリ
	はじめに
	レシピ17.1	特定の日付以前に修正されたすべてのファイルを見つける
	レシピ17.2	ファイルをクリアまたは削除する
	レシピ17.3	ファイルの属性の管理や変更を行う
	レシピ17.4	ディレクトリ内のファイルを取得する
	レシピ17.5	パターンとマッチするファイルを見つける
	レシピ17.6	名前に特殊文字が含まれているファイルを管理する
	レシピ17.7	プログラム:ディスク使用率に関する情報を取得する
	レシピ17.8	現在の場所を知る
	レシピ17.9	ファイルの変更を監視する
	レシピ17.10	プログラム:ファイルのMD5ハッシュまたはSHA1ハッシュを取得する
	レシピ17.11	ディレクトリを作成する
	レシピ17.12	ファイルまたはディレクトリを削除する
	レシピ17.13	ファイルまたはディレクトリの名前を変更する
	レシピ17.14	ファイルまたはディレクトリを移動する
	レシピ17.15	ファイルまたはディレクトリのACLを取得する
	レシピ17.16	ファイルまたはディレクトリのACLを設定する
	レシピ17.17	プログラム:拡張ファイルプロパティをファイルに追加する
	レシピ17.18	プログラム:ファイルシステムのハードリンクを作成する
	レシピ17.19	プログラム:ZIPアーカイブを作成する

18章	Windowsレジストリ
	はじめに
	レシピ18.1	レジストリに移動する
	レシピ18.2	レジストリキーを表示する
	レシピ18.3	レジストリキーの値を修正または削除する
	レシピ18.4	レジストリキーの値を作成する
	レシピ18.5	レジストリキーを削除する
	レシピ18.6	サイトをInternet Explorerセキュリティゾーンに追加する
	レシピ18.7	Internet Explorer設定を修正する
	レシピ18.8	プログラム:Windowsレジストリを検索する
	レシピ18.9	レジストリキーのACLを取得する
	レシピ18.10	レジストリキーのACLを設定する
	レシピ18.11	リモートコンピュータのレジストリを操作する
	レシピ18.12	プログラム:リモートマシンからレジストリ項目を取得する
	レシピ18.13	プログラム:リモートレジストリキーのプロパティを取得する
	レシピ18.14	プログラム:リモートレジストリキーのプロパティを設定する
	レシピ18.15	プログラムのレジストリ設定を見つける

19章	データの比較
	はじめに
	レシピ19.1	2つのコマンドの出力を比較する
	レシピ19.2	2つのファイルの違いを知る
	レシピ19.3	ファイルセットの整合性を検証する

20章	イベントログ
	はじめに
	レシピ20.1	すべてのイベントログをリストする
	レシピ20.2	イベントログから最新のエントリを取得する
	レシピ20.3	特定のテキストを持つイベントログエントリを見つける
	レシピ20.4	特定のイベントログエントリを取得する
	レシピ20.5	頻度別にイベントログエントリを検索する
	レシピ20.6	イベントログをバックアップする
	レシピ20.7	イベントログを作成または削除する
	レシピ20.8	イベントログに書き込む
	レシピ20.9	リモートマシンのイベントログにアクセスする

21章	プロセス
	はじめに
	レシピ21.1	現在実行中のプロセスをリストする
	レシピ21.2	プロセスを起動する
	レシピ21.3	プロセスを停止する
	レシピ21.4	プログラム:リモートマシンでPowerShellの式を実行する

22章	システムサービス
	はじめに
	レシピ22.1	現在実行中のサービスをリストする
	レシピ22.2	実行中のサービスを管理する
	レシピ22.3	リモートマシンのサービスにアクセスする

23章	Active Directory
	はじめに
	レシピ23.1	ローカルなインストール環境でActive Directoryスクリプトをテストする
	レシピ23.2	組織単位(OU)を作成する
	レシピ23.3	組織単位のプロパティを取得する
	レシピ23.4	組織単位のプロパティを修正する
	レシピ23.5	Active Directoryコンテナの子を取得する
	レシピ23.6	ユーザーアカウントを作成する
	レシピ23.7	プログラム:Active Directoryにユーザーを一括してインポートする
	レシピ23.8	ユーザーアカウントを検索する
	レシピ23.9	ユーザーアカウントのプロパティを取得する
	レシピ23.10	ユーザーアカウントのプロパティを修正する
	レシピ23.11	セキュリティグループまたは配布グループを作成する
	レシピ23.12	セキュリティグループまたは配布グループを検索する
	レシピ23.13	グループのプロパティを取得する
	レシピ23.14	グループの所有者を見つける
	レシピ23.15	セキュリティグループまたは配布グループのプロパティを修正する
	レシピ23.16	ユーザーをセキュリティグループまたは配布グループに追加する
	レシピ23.17	ユーザーをセキュリティグループまたは配布グループから削除する
	レシピ23.18	ユーザーのグループメンバシップをリストする
	レシピ23.19	グループのメンバをリストする
	レシピ23.20	組織単位のユーザーをリストする
	レシピ23.21	コンピュータアカウントを検索する
	レシピ23.22	コンピュータアカウントのプロパティを取得する

24章	企業のコンピュータ管理
	はじめに
	レシピ24.1	プログラム:ユーザーのログオン/ログオフスクリプトをリストする
	レシピ24.2	プログラム:マシンのスタートアップ/シャットダウンスクリプトをリストする
	レシピ24.3	Windowsファイアウォールを有効または無効にする
	レシピ24.4	Windowsファイアウォール内でポートの開閉を行う
	レシピ24.5	プログラム:インストールされているすべてのソフトウェアをリストする
	レシピ24.6	アプリケーションをアンインストールする
	レシピ24.7	コンピュータのスケジュールされたタスクを管理する
	レシピ24.8	プリンタ情報を取得する
	レシピ24.9	プリンタキューの統計を取得する
	レシピ24.10	プリンタと印刷キューを管理する
	レシピ24.11	ホットフィクスがインストールされているかどうかを知る
	レシピ24.12	プログラム:システムに関するサマリー情報を表示する
	レシピ24.13	DHCPリースを更新する
	レシピ24.14	静的IPアドレスを割り当てる
	レシピ24.15	コンピュータのすべてのIPアドレスをリストする
	レシピ24.16	ネットワークアダプタのプロパティをリストする

25章	Exchange Server 2007の管理
	はじめに
	レシピ25.1	Exchange管理シェルを試す
	レシピ25.2	ウィザードによるタスクを自動化する
	レシピ25.3	Exchangeユーザーを管理する
	レシピ25.4	メールボックスを管理する
	レシピ25.5	配布グループを管理する
	レシピ25.6	トランスポートルールを管理する
	レシピ25.7	Outlook Web Accessを管理する

26章	Operations Manager 2007の管理
	はじめに
	レシピ26.1	Operations Managerコマンドシェルを試す
	レシピ26.2	Operations Managerエージェントを管理する
	レシピ26.3	メンテナンスウィンドウをスケジュールする
	レシピ26.4	管理パックの取得、インストール、アンインストールを行う
	レシピ26.5	ルールを有効または無効にする
	レシピ26.6	タスクをリストして開始する
	レシピ26.7	アラートを管理する

付録A	PowerShell言語と環境
	A.1	コマンドと式
	A.2	コメント
	A.3	変数
	A.4	ブール値
	A.5	文字列
	A.6	数字
	A.7	配列とリスト
	A.8	ハッシュテーブル(連想配列)
	A.9	XML
	A.10	単純な演算子
	A.11	比較演算子
	A.12	条件ステートメント
	A.13	ループステートメント
	A.14	.NET Frameworkを利用する
	A.15	スクリプトの記述と機能の再利用
	A.16	エラーを管理する
	A.17	出力を書式設定する
	A.18	出力をキャプチャする
	A.19	トレースとデバッグ
	A.20	一般的なカスタマイズポイント

付録B	正規表現リファレンス

付録C	PowerShell自動変数

付録D	標準のPowerShell動詞

付録E	便利な.NETクラスとその使用法

付録F	WMIリファレンス

付録G	便利なCOMオブジェクトとその使用法

付録H	.NETの文字列書式
	H.1	文字列書式の構文
	H.2	標準の数値書式文字列
	H.3	カスタム数値書式文字列

付録I	.NET DateTime書式指定子
	I.1	標準のDateTime書式文字列
	I.2	カスタムDateTime書式文字列

索引
監訳者あとがき