この付録では、各章の最後にあるレビューの質問に対する簡潔な回答を示します。 これを使用して、理解を検証し、主要な概念を強化します。
第 1 章 - PowerShell の概要
-
$PSVersionTable自動変数を使用します。 - ローカル コンピューターで昇格が必要なタスクに対して、ユーザー アカウント制御 (UAC) をバイパスする必要がある場合のみ。
- Windows クライアント システムの既定の実行ポリシーは
Restrictedであり、スクリプトの実行を禁止します。 -
Get-ExecutionPolicyを使用して、現在の実行ポリシーを決定します。 -
Set-ExecutionPolicy(たとえば、Set-ExecutionPolicy -ExecutionPolicy RemoteSigned) を使用します。
第 2 章 - ヘルプ システム
- No.
の
Get-Serviceパラメーターには、位置指定ではなく名前が付けられています。 -
Get-Processには 6 つのパラメーター セットがあります。 -
Get-Command -Noun EventLogを使用してください。 -
Get-Process -Name powershellを使用してください。 -
Update-Help(Windows PowerShell の管理者として昇格) を実行して、最新のヘルプ コンテンツをダウンロードしてインストールします。
第 3 章 - オブジェクト、プロパティ、およびメソッドの検出
-
Get-Processは、System.Diagnostics.Processオブジェクトを生成します。 - コマンドを
Get-Memberにパイプします。 - オブジェクトにアクションを実行するメソッドがあるかどうかを確認します。
- コマンドの
PassThruパラメーターがある場合は、それを使用します。 - プロトタイプ作成中に大量の出力が繰り返し生成されないように、コマンドを 1 回実行し、結果を変数に格納します。
第 4 章 - One-Liners とパイプライン
- PowerShell ワンライナーは、スパンする物理回線の数に関係なく、単一の連続パイプラインです。
- 自然な改行は、パイプ (
|)、コンマ (,)、開始角かっこ ([ ])、中かっこ ({ })、かっこ (( )) などの文字で発生する可能性があります。 - パイプラインを通過するデータの量を減らすことで、パフォーマンスと効率を向上させるために左にフィルター処理する必要があります。
- コマンドは、値 (型) またはプロパティ名でパイプライン入力を受け入れます。
- PowerShell ギャラリーのほとんどのコンテンツはコミュニティに投稿されており、審査されない可能性があるため、使用する前にレビューとテストを行う必要があります。
第 5 章 - 書式設定、エイリアス、プロバイダー、比較
- 書式設定コマンドレットはフォーマット オブジェクトを生成するため、パイプラインが中断され、他のほとんどのコマンドでは使用できません。
-
Get-Alias -Name %を使用して、実際のコマンドレットを決定します。 - エイリアスは読みやすさと移植性を低下させるので、他のユーザーがスクリプトを理解しにくくします。
-
Get-ChildItem -Path HKLM:\, HKCU:\を使用して、両方のハイブのレジストリ キーを一覧表示します。 -
-replace演算子は既定では大文字と小文字が区別されませんが、.Replace()メソッドでは大文字と小文字が区別されます。
第 6 章 - フロー制御
-
ForEach-Objectはパイプライン (ストリーミング) から一度に 1 つずつ項目を処理しますが、foreachステートメントは既にメモリに読み込まれているコレクションの項目を処理します。 -
whileループは実行前にその条件を評価するため、少なくとも 1 回実行されるdo whileやdo untilとは異なり、条件が false の場合は実行されない可能性があります。 -
breakはループを完全に終了し、continueは現在のイテレーションをスキップし、次のイテレーションに進みます。
第 7 章 - WMI の操作
- WMI コマンドレット (
Get-WmiObjectなど) は古く、DCOM を使用しますが、CIM コマンドレット (Get-CimInstanceなど) は新しく、既定では WSMan を使用します。 - WSMan (Windows リモート管理)。
- CIM セッションを使用すると、接続の再利用、代替資格情報のサポート、パフォーマンスの向上、複数のリモート接続の管理の簡素化が可能になります。
- たとえば、DCOM を使用する
New-CimSessionOptionを使用してセッション オプションを作成し、New-CimSessionに渡してから、Get-CimInstanceでそのセッションを使用します。 -
Remove-CimSessionを使用してください。
第 8 章 - PowerShell リモート処理
-
Enable-PSRemotingを使用してください。 -
Enter-PSSessionを使用してください。 - これにより、各コマンドでコンピューター名と資格情報を指定する代わりに、永続的なセッションを使用できます。
- はい。PowerShell セッション (PSSession) は、1 対 1 の対話型リモート処理シナリオで使用できます。
- ローカル実行コマンドレットはメソッドを使用してライブ オブジェクトを返し、リモート コマンドはメソッドなしで逆シリアル化されたオブジェクトを返します。
第 9 章 - 関数
-
Get-Verbを使用してください。 -
[CmdletBinding()]属性を関数に追加します。 - 関数がシステム状態に変更を加えたり、影響を受ける可能性のあるアクションを実行したりしたとき。
-
-ErrorAction Stopを指定します。 - 関数を簡単に理解し、
Get-Helpに関するヘルプにアクセスできるように、関数の使用方法を文書化します。
第 10 章 - スクリプト モジュール
-
.psm1ファイルを作成し、その中に関数を配置します。 - 承認された動詞を使用すると、一貫性が確保され、警告が回避され、検出可能性が向上します。
-
New-ModuleManifestを使用してください。 -
Export-ModuleMemberファイルで.psm1を使用するか、FunctionsToExportファイルの.psd1フィールドで関数を指定します。 - モジュールは、モジュールと同じ名前のフォルダー内にあり、
$env:PSModulePathに一覧表示されているパスにあり、適切なモジュール ファイル (.psm1またはマニフェスト) が含まれている必要があります。
最後の注意事項
- これらの回答は、主要な概念を強化するために意図的に簡潔です。
- より深く理解するために章を見直してください。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
PowerShell