付録 - レビュー質問への回答

この付録では、各章の最後にあるレビューの質問に対する簡潔な回答を示します。 これを使用して、理解を検証し、主要な概念を強化します。

第 1 章 - PowerShell の概要

  1. $PSVersionTable自動変数を使用します。
  2. ローカル コンピューターで昇格が必要なタスクに対して、ユーザー アカウント制御 (UAC) をバイパスする必要がある場合のみ。
  3. Windows クライアント システムの既定の実行ポリシーは Restricted であり、スクリプトの実行を禁止します。
  4. Get-ExecutionPolicyを使用して、現在の実行ポリシーを決定します。
  5. Set-ExecutionPolicy (たとえば、Set-ExecutionPolicy -ExecutionPolicy RemoteSigned) を使用します。

第 2 章 - ヘルプ システム

  1. No. Get-Service パラメーターには、位置指定ではなく名前が付けられています。
  2. Get-Process には 6 つのパラメーター セットがあります。
  3. Get-Command -Noun EventLog を使用してください。
  4. Get-Process -Name powershell を使用してください。
  5. Update-Help (Windows PowerShell の管理者として昇格) を実行して、最新のヘルプ コンテンツをダウンロードしてインストールします。

第 3 章 - オブジェクト、プロパティ、およびメソッドの検出

  1. Get-Process は、 System.Diagnostics.Process オブジェクトを生成します。
  2. コマンドを Get-Member にパイプします。
  3. オブジェクトにアクションを実行するメソッドがあるかどうかを確認します。
  4. コマンドの PassThru パラメーターがある場合は、それを使用します。
  5. プロトタイプ作成中に大量の出力が繰り返し生成されないように、コマンドを 1 回実行し、結果を変数に格納します。

第 4 章 - One-Liners とパイプライン

  1. PowerShell ワンライナーは、スパンする物理回線の数に関係なく、単一の連続パイプラインです。
  2. 自然な改行は、パイプ (|)、コンマ (,)、開始角かっこ ([ ])、中かっこ ({ })、かっこ (( )) などの文字で発生する可能性があります。
  3. パイプラインを通過するデータの量を減らすことで、パフォーマンスと効率を向上させるために左にフィルター処理する必要があります。
  4. コマンドは、値 (型) またはプロパティ名でパイプライン入力を受け入れます。
  5. PowerShell ギャラリーのほとんどのコンテンツはコミュニティに投稿されており、審査されない可能性があるため、使用する前にレビューとテストを行う必要があります。

第 5 章 - 書式設定、エイリアス、プロバイダー、比較

  1. 書式設定コマンドレットはフォーマット オブジェクトを生成するため、パイプラインが中断され、他のほとんどのコマンドでは使用できません。
  2. Get-Alias -Name %を使用して、実際のコマンドレットを決定します。
  3. エイリアスは読みやすさと移植性を低下させるので、他のユーザーがスクリプトを理解しにくくします。
  4. Get-ChildItem -Path HKLM:\, HKCU:\を使用して、両方のハイブのレジストリ キーを一覧表示します。
  5. -replace演算子は既定では大文字と小文字が区別されませんが、.Replace()メソッドでは大文字と小文字が区別されます。

第 6 章 - フロー制御

  1. ForEach-Object はパイプライン (ストリーミング) から一度に 1 つずつ項目を処理しますが、 foreach ステートメントは既にメモリに読み込まれているコレクションの項目を処理します。
  2. while ループは実行前にその条件を評価するため、少なくとも 1 回実行されるdo whiledo untilとは異なり、条件が false の場合は実行されない可能性があります。
  3. break はループを完全に終了し、 continue は現在のイテレーションをスキップし、次のイテレーションに進みます。

第 7 章 - WMI の操作

  1. WMI コマンドレット ( Get-WmiObject など) は古く、DCOM を使用しますが、CIM コマンドレット ( Get-CimInstance など) は新しく、既定では WSMan を使用します。
  2. WSMan (Windows リモート管理)。
  3. CIM セッションを使用すると、接続の再利用、代替資格情報のサポート、パフォーマンスの向上、複数のリモート接続の管理の簡素化が可能になります。
  4. たとえば、DCOM を使用する New-CimSessionOptionを使用してセッション オプションを作成し、 New-CimSessionに渡してから、 Get-CimInstanceでそのセッションを使用します。
  5. Remove-CimSession を使用してください。

第 8 章 - PowerShell リモート処理

  1. Enable-PSRemoting を使用してください。
  2. Enter-PSSession を使用してください。
  3. これにより、各コマンドでコンピューター名と資格情報を指定する代わりに、永続的なセッションを使用できます。
  4. はい。PowerShell セッション (PSSession) は、1 対 1 の対話型リモート処理シナリオで使用できます。
  5. ローカル実行コマンドレットはメソッドを使用してライブ オブジェクトを返し、リモート コマンドはメソッドなしで逆シリアル化されたオブジェクトを返します。

第 9 章 - 関数

  1. Get-Verb を使用してください。
  2. [CmdletBinding()]属性を関数に追加します。
  3. 関数がシステム状態に変更を加えたり、影響を受ける可能性のあるアクションを実行したりしたとき。
  4. -ErrorAction Stop を指定します。
  5. 関数を簡単に理解し、 Get-Helpに関するヘルプにアクセスできるように、関数の使用方法を文書化します。

第 10 章 - スクリプト モジュール

  1. .psm1 ファイルを作成し、その中に関数を配置します。
  2. 承認された動詞を使用すると、一貫性が確保され、警告が回避され、検出可能性が向上します。
  3. New-ModuleManifest を使用してください。
  4. Export-ModuleMember ファイルで.psm1を使用するか、FunctionsToExport ファイルの .psd1 フィールドで関数を指定します。
  5. モジュールは、モジュールと同じ名前のフォルダー内にあり、 $env:PSModulePathに一覧表示されているパスにあり、適切なモジュール ファイル (.psm1 またはマニフェスト) が含まれている必要があります。

最後の注意事項

  • これらの回答は、主要な概念を強化するために意図的に簡潔です。
  • より深く理解するために章を見直してください。