PowerShell は、コマンドライン シェルであり、スクリプト言語です。 PowerShell は、管理タスクの自動化に役立つ Windows で開始されました。 これで、クロス プラットフォームが実行され、さまざまなタスクに使用できるようになりました。
PowerShell が一意になるのは、テキストではなく.NET オブジェクトを受け入れて返すということです。 この機能により、パイプライン内のさまざまなコマンドを簡単に接続 できます。
PowerShell は何に使用できますか?
最初は、PowerShell は Windows 専用でした。 これでクロスプラットフォームになり、次のようなさまざまなタスクに使用できます。
- クラウド管理。 PowerShell を使用して、クラウド リソースを管理できます。 たとえば、情報の取得、更新、または新しいリソースのデプロイを行うことができます。
- CI/CD。 また、継続的インテグレーション/継続的配置パイプラインの一部として使用することもできます。
- Active Directory と Exchange のタスクを自動化します。 これを使用すると、Active Directory でのユーザーの作成や Exchange のメールボックスの作成など、Windows 上のほぼすべてのタスクを自動化できます。
PowerShell を使用するユーザー
PowerShell は、さまざまなロールで作業するユーザーを支援できる強力なツールです。 従来、PowerShell はシステム管理者によって使用されていました。 現在は、DevOps、Cloud Ops、さらには開発者を呼び出すユーザーによって使用されています。
PowerShell コマンドレット
PowerShell には、何百ものプレインストールされたコマンドが付属しています。 PowerShell コマンドはコマンドレットと呼ばれます ( command-lets と発音されます)。
各コマンドレットの名前は 、動詞と名詞 のペアで構成されます。 たとえば、「 Get-Process 」のように入力します。 この名前付け規則により、コマンドレットの動作を理解しやすくなります。 また、探しているコマンドを見つけやすくなります。 使用するコマンドレットを探すときは、動詞または名詞でフィルター処理できます。
コマンドレットを使用した PowerShell の探索
PowerShell を初めて取得するとき、学習することが多いように思われるので、それは威圧感を感じるかもしれません。 PowerShell は、必要に応じて、少しずつ学習できるように設計されています。
PowerShell には、PowerShell の検出に役立つコマンドレットが含まれています。 これら 3 つのコマンドレットを使用すると、使用可能なコマンド、コマンドの実行内容、操作対象の種類を確認できます。
-
Get-Verb。 このコマンドを実行すると、ほとんどのコマンドが準拠する動詞の一覧が返されます。 応答には、これらの動詞の動作の説明が含まれています。 ほとんどのコマンドはこの名前付け規則に従っているため、コマンドの動作に対する期待が設定されます。 このコマンドは、独自のコマンドを作成するときに、適切な動詞とコマンドの名前を選択するのに役立ちます。 -
Get-Command。 このコマンドは、コンピューターにインストールされているすべてのコマンドの一覧を取得します。 -
Get-Member。 これはオブジェクト ベースの出力に対して動作し、コマンドで使用できるオブジェクト、プロパティ、メソッドを検出できます。 -
Get-Help。 コマンドの名前を引数としてこのコマンドを呼び出すと、コマンドのさまざまな部分を説明するヘルプ ページが表示されます。
これらのコマンドを使用すると、PowerShell について知る必要があるほとんどすべてのものを検出できます。
動詞
動詞 は PowerShell の重要な概念です。 これは、ほとんどのコマンドレットが従う名前付け標準です。 また、独自のコマンドを記述するときに従う必要がある名前付け標準でもあります。 動詞には、 データの読 み取りや変更など、何をしようとしているかを示すという考え方があります。 PowerShell には、動詞の標準化された一覧があります。 使用可能なすべての動詞の完全な一覧を取得するには、 Get-Verb コマンドレットを使用します。
Get-Verb
コマンドレットは、動詞の長い一覧を返します。 説明は、動詞の目的に関するコンテキストを提供します。 出力の最初のいくつかの行を次に示します。
Verb AliasPrefix Group Description
---- ----------- ----- -----------
Add a Common Adds a resource to a container, or attaches an item to another item
Clear cl Common Removes all the resources from a container but does not delete the container
Close cs Common Changes the state of a resource to make it inaccessible, unavailable, or unusab…
Copy cp Common Copies a resource to another name or to another container
Enter et Common Specifies an action that allows the user to move into a resource
Exit ex Common Sets the current environment or context to the most recently used context
...
Get-Command を使用してコマンドを検索する
Get-Command コマンドレットは、システムにインストールされているすべての使用可能なコマンドの一覧を返します。 リストは大きくなる可能性があります。 パラメーターまたはヘルパー コマンドレットを使用して応答をフィルター処理することで、返される情報の量を制限できます。
名前のフィルター処理
さまざまなパラメーターを使用して、 Get-Command の出力をフィルター処理できます。 フィルター処理を使用すると、特定のプロパティを持つコマンドを検索できます。
Name パラメーターを使用すると、特定のコマンドを名前で検索できます。
Get-Command -Name Get-Process
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-Process 7.0.0.0 Microsoft.PowerShell.Management
プロセスで動作するすべてのコマンドを検索する場合はどうしますか? ワイルドカード * を使用して、他の形式の文字列と一致させることができます。 例えば次が挙げられます。
Get-Command -Name *-Process
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Debug-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Get-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Start-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Stop-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Wait-Process 7.0.0.0 Microsoft.PowerShell.Management
名詞と動詞のフィルター処理
動詞と名詞の値をフィルター処理するパラメーターは他にもあります。 コマンド名の動詞部分は左端の部分です。 動詞は、 Get-Verb コマンドレットによって返される値のいずれかである必要があります。 コマンドの右端の部分は名詞部分です。 名詞は何でもかまいません。
動詞でフィルター処理します。 コマンド
Get-Processでは、動詞部分がGet。 動詞部分をフィルター処理するには、 Verb パラメーターを使用します。Get-Command -Verb 'Get'次の使用例は、動詞
Getを使用するすべてのコマンドを一覧表示します。名詞でフィルター処理します。 コマンド
Get-Processでは、名詞部分がProcess。 名詞をフィルター処理するには、 名詞 パラメーターを使用します。 次の例では、文字Uで始まる名詞を持つすべてのコマンドレットを返します。Get-Command -Noun U*
また、パラメーターを組み合わせて検索を絞り込むこともできます。次に例を示します。
Get-Command -Verb Get -Noun U*
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-UICulture 7.0.0.0 Microsoft.PowerShell.Utility
Cmdlet Get-Unique 7.0.0.0 Microsoft.PowerShell.Utility
Cmdlet Get-Uptime 7.0.0.0 Microsoft.PowerShell.Utility
ヘルパー コマンドレットを使用して結果をフィルター処理する
他のコマンドレットを使用して結果をフィルター処理することもできます。
Select-Object。 この汎用コマンドは、1 つ以上のオブジェクトから特定のプロパティを選択するのに役立ちます。 また、返される項目の数を制限することもできます。 次の例では、現在のセッションで使用できる最初の 5 つのコマンドの Name プロパティと Source プロパティ値を返します。Get-Command | Select-Object -First 5 -Property Name, SourceName Source ---- ------ Add-AppPackage Appx Add-AppPackageVolume Appx Add-AppProvisionedPackage Dism Add-AssertionOperator Pester Add-ProvisionedAppPackage Dism詳細については、「 Select-Object」を参照してください。
Where-Object。 このコマンドレットを使用すると、プロパティの値に基づいて返されるオブジェクトをフィルター処理できます。 このコマンドは、プロパティの値をテストできる式を受け取ります。 次の例では、ProcessNameがpで始まるすべてのプロセスを返します。Get-Process | Where-Object {$_.ProcessName -like "p*"}Get-Processコマンドレットは、プロセス オブジェクトのコレクションを返します。 応答をフィルター処理するには、出力を パイプ 処理してWhere-Objectします。 パイプとは、パイプ|文字を介して 2 つ以上のコマンドが接続されていることを意味します。 1 つのコマンドからの出力は、次のコマンドの入力として送信されます。Where-Objectのフィルター式では、-like演算子を使用して、文字pで始まるプロセスを照合します。
Get-Member を使用してオブジェクトを探索する
目的のコマンドレットを見つけたら、生成される出力の詳細を確認する必要があります。
Get-Member コマンドレットは、オブジェクトの型、プロパティ、およびメソッドを表示します。 検査する出力をパイプ処理して、 Get-Memberします。
Get-Process | Get-Member
結果には、返された型が TypeName として表示され、オブジェクトのすべてのプロパティとメソッドが表示されます。 このような結果の抜粋を次に示します。
TypeName: System.Diagnostics.Process
Name MemberType Definition
---- ---------- ----------
Handles AliasProperty Handles = Handlecount
Name AliasProperty Name = ProcessName
...
MemberType パラメーターを使用すると、返される情報を制限できます。
Get-Process | Get-Member -MemberType Method
既定では、PowerShell にはいくつかのプロパティのみが表示されます。 前の例では、 Name、 MemberType、および Definition メンバーを表示しました。
Select-Objectを使用して、表示するプロパティを指定できます。 たとえば、 Name プロパティと Definition プロパティのみを表示します。
Get-Process | Get-Member | Select-Object Name, Definition
パラメーターの種類で検索する
Get-Member は、 Get-Process が プロセス 型オブジェクトを返すという結果を示しました。
Get-Commandの ParameterType パラメーターを使用すると、Process オブジェクトを入力として受け取る他のコマンドを検索できます。
Get-Command -ParameterType Process
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Debug-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Cmdlet Enter-PSHostProcess 7.1.0.0 Microsoft.PowerShell.Core
Cmdlet Get-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Cmdlet Get-PSHostProcessInfo 7.1.0.0 Microsoft.PowerShell.Core
Cmdlet Stop-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Cmdlet Wait-Process 7.0.0.0 Microsoft.PowerShell.Managem…
コマンドの出力の種類を知ることは、関連するコマンドの検索を絞り込むのに役立ちます。
その他のリソース
PowerShell