知っておくべき10の基本的なPowerShellコマンド

以下のように、PowerShellの基本を理解することで、PowerShellのプロになり、管理タスクを効率的に自動化できるようになります。

このチュートリアルでは、PowerShellの基本的なコマンドを学び、PowerShellのエクスペリエンスをより面白くするための必要な情報を提供します。

前提条件

このチュートリアルは実演形式で行われますが、特別な前提条件はありません。WindowsまたはLinuxシステムであれば、PowerShell 5.1以降が動作します。コマンドはWindows PowerShellを使用して表示されていますが、以下の例はPowerShell 7+のクロスプラットフォームでも動作します。

Get-Helpコマンドでコマンドのヘルプ情報を取得する

ボスのようにコードを書いたことがありますか?でも、いつも助けが必要になることでしょう。コマンドライン環境でコードまたはコマンドを実行している場合でも、Get-Helpコマンドレットが役立ちます。

このチュートリアルでは、Get-Helpコマンドレットの動作方法を学ぶことから始めます。

Get-Helpコマンドレットは、エラーを発生させることなく、任意のコマンドを効果的に使用するために必要なガイドを提供します。各PowerShellコマンドのドキュメントと考えてください。

管理者としてPowerShellを開き、以下のGet-Helpコマンドを実行して、Get-ExecutionPolicyコマンドレットなどのコマンドの詳細な情報(-Detailed)を表示します。

Get-Help -Name Get-ExecutionPolicy -Detailed
Getting Detailed Information of Commands

詳細な情報だけでなく、コマンドのフル情報を表示したい場合は、Get-Helpコマンドに-Fullパラメータを追加してください。

以下のコードを実行して、Get-Helpコマンド自体のフル(-Full)情報を取得してください。

Get-Help Get-Help -Full
Getting Full Information of Commands

コマンドを実行する際にエラーを回避するためにさらに例が必要な場合は、-Examplesパラメータを追加してコマンドの使用例を表示してください。

Get-Processコマンドの使用例(-Examples)を表示するには、以下のGet-Helpコマンドを実行してください。

 Get-Help Get-Process -Examples
Applying -Examples to get help for Get-Process

Get-Processでコンピュータープロセスを取得

覚えていますか?すべてのプロセス、サービス、アプリケーションなどを表示するWindowsタスクマネージャー?良いですね!Get-Processコマンドレットは、タスクマネージャーを開かずに数ステップでコンピュータのすべてのプロセスにアクセスできる基本的で重要なコマンドレットです。

次のコマンドを実行して、すべてのシステムプロセスのリストをテーブル形式で取得します。

Get-Process
Getting All Windows Processes

プロセスがフリーズしてコンピュータが遅くなる場合は、Get-ProcessコマンドレットをStop-Processコマンドレットにパイプしてプロセスを停止します。例: Get-Process -Id 1252 | Stop-Processを実行します。ここで-Id 1252は停止したいプロセスのプロセスIDを指定します。

Get-Historyを使用してPowerShellセッションの履歴を取得する

最近のコマンドを確認する必要がある場合があります。例えば、実行したコマンドが正しいか、実際にコマンドを実行したかどうかを確認する必要があります。PowerShellにはコマンドの履歴がありますか?はい! Get-History コマンドレットは、現在のPowerShellセッションで実行した最近のすべてのコマンドのオブジェクトを返します。

以下のコマンドを実行して、現在のセッションで最近実行されたすべてのコマンドのリストを取得します。

Get-History
Getting the commands history of the current session

履歴から特定のコマンドを表示する場合は、-Id パラメータの後に履歴のコマンドのID番号を追加します。たとえば、Get-History -Id 2 を実行して、履歴の2番目のコマンドを表示します。

Get-Serviceでシステムサービスを表示する

Get-Process コマンドレットと同様に、PowerShellではシステムで実行されているすべてのサービスを表示することもできます。 Get-Service コマンドレットを使用すると、データベースサーバーまたはコンピューターの画面の明るさを自動的に制御するアプリケーションなど、すべてのサービスを表示することができます。

以下のコマンドを実行して、システム上のすべてのサービスの一覧をテーブル形式で取得します。このコマンドを使用すると、停止しているサービスも表示できます。

Get-Service
Getting all available services on the local computer

おそらく特定の文字で始まるサービスを探しているかもしれません。その場合は、ワイルドカード文字(*)を追加すると便利です。

Get-Serviceコマンドを以下のように実行して、表示したいサービスの最初の文字とアスタリスク(A*)を渡します。ワイルドカード文字を追加すると、文字 ‘A’ で始まらないすべてのサービスをフィルタリングできます。

Get-Service A*
Getting all services that start with the letter ‘A’

Start-Jobを使用してバックグラウンドジョブを実行する

コードを書くのがまだ多い場合は、単一のコマンドで書くのが時間がかかります。問題ありません! PowerShellには、セッションでコードやコマンドをバックグラウンドジョブとして実行するためのcmdletが用意されています。Start-Jobコマンドは、ユーザーの干渉なしにバックグラウンドジョブとしてコードまたはコマンドを実行するPowerShell環境を提供します。

Start-Jobコマンドを以下のように実行して、Get-Command cmdletのバックグラウンドジョブを開始します。バックグラウンドジョブを開始すると、Get-Command cmdletの出力がコマンドラインに表示されません。

Start-Job -ScriptBlock {Get-Command}
Starting a background job for Get-Command

バックグラウンドジョブなので、ジョブがまだ実行中かどうか、または完了したかどうかを確認するにはどうすればよいですか? Get-Job cmdletを実行して、セッション内のすべてのジョブを取得します。

Set-Locationを使用して作業ディレクトリを変更

ディレクトリを変更する必要がある時があります。スクリプトやプログラムを特定の場所から実行する場合などですが、どのようにディレクトリを変更するのでしょうか?Set-Location コマンドレットがその手助けをします。 Set-Location コマンドレットは、コマンド内で指定したディレクトリに現在の作業ディレクトリを設定します。

以下のコードを実行して、現在の作業ディレクトリをC:\Users\hp\Desktopに設定できます。Computerのユーザー名であるhpを自分のものに変更してください。

Set-Location C:\Users\hp\Desktop

下のプロンプトで確認できるように、C:\Users\hp\Desktopが現在の作業ディレクトリになります。

Changing Working Directory

Test-Pathを使用してパスが存在するか確認

存在しないファイルにアクセスしようとすると、PowerShellはバグを表示することがあります。それを回避する方法は?Test-Path コマンドレットは直感的な構文で、パスが存在するかどうかを確認できます。

今、デスクトップにNewFolderという名前のフォルダを作成してください。

以下のTest-Pathコマンドを実行し、テストしたいパスを指定してください。この例では、コマンドはC:\Users\hp\Desktop\NewFolderパスの存在をテストします。

Test-Path C:\Users\hp\Desktop\NewFolder

以下は、パスが存在するため、コマンドがTrueの値を返しました。それ以外の場合は、Falseの出力が得られます。

Testing if the path exists

ConvertTo-HTMLを使用してPowerShellオブジェクトをHTMLに変換

データを整理された形式で表示したい場合は、ConvertTo-Htmlコマンドレットを使用してデータをHTMLに変換します。基本的に、コマンドは変換したい出力ファイルと、それを保存するファイル名を受け取ります。

以下のコマンドを実行して、メモリ内のすべてのPowerShellコマンド(Get-Command)のリストを収集し、(ConvertTo-Html)リストをHTMLファイルCommand.htmlに変換します。

HTMLファイルは、以前に作業ディレクトリを変更したため、デスクトップに保存されます。代わりに別の場所にHTMLファイルを保存するには、完全なパスを指定します。例:Get-Command | ConvertTo-HTML > C:\Temp\Commands.html

# すべてのPowerShellコマンドを含むCommands.htmlファイルを作成します
Get-Command | ConvertTo-Html > Commands.html

Export-CSVを使用してPowerShellオブジェクトをCSVにエクスポート

もしHTMLよりもCSV形式のレポートが良いと考えるなら、Export-CSV コマンドレットを使用してください。ConvertTo-Html コマンドレットと同様に、Export-CSV コマンドレットを使用すると、データをCSVファイルにエクスポートできます。

以下のコマンドを実行して、PowerShellコマンド(Get-Command)のリストを収集し、リストをCSVファイル(Export-CSV)にエクスポートします。ファイルの名前はCommands.csvです。

Get-Command | Export-CSV Commands.csv

ConvertTo-Htmlコマンドレットと同様に、CSVファイルのエクスポートパスも指定できます。例:Get-Command | Export-CSV C:\Temp\Commands.csv

Commands.csv ファイルを開くと、以下のようなものが表示されます。悪くありませんね。

Opening Exported Commands.csv in Microsoft Excel

Get-Commandを使用して利用可能なPowerShellコマンドをすべて表示

リストの最後のPowerShellコマンドはGet-Command コマンドレットです。Get-Command コマンドレットは基本的に、テーブル形式で実行可能なすべてのPowerShellコマンドを一覧表示します。ただし、前の例で見たように、Get-Commandができることはそれだけではありません。

おそらく、特定の cmdlet またはエイリアスを選択的にリストしたいのでしょう。その場合は、Get-Command cmdlet に -CommandType パラメーターを追加して、指定したコマンドの種類で出力をフィルタリングします。 -CommandType パラメーターの値は AliasCmdlet、または Function にすることができます。

次のコマンドを実行して、名前が ‘G’ で始まる cmdlet のみをリストします(-CommandType Cmdlet)。

Get-Command -Name G* -CommandType Cmdlet
Getting all cmdlets that start with the letter ‘G’

Get-Command 出力をフィルタリングする別の方法は、Get-Command 出力を Select-Object cmdlet にパイプ処理することです。ご存知のように、Get-Command cmdlet によって返されるオブジェクトはテーブル形式です。そのテーブルでは、列名がオブジェクトから選択できるプロパティを表します。

以下の Get-Command を実行して、すべての PowerShell コマンドのリストを収集し、各コマンドの定義プロパティを表示します(Select-Object -Property Definition)。

Get-Command | Select-Object -Property Definition
Property Definition

結論

このチュートリアルでは、基本的な PowerShell コマンドの実行について詳細なガイドを提供しました。今では、コマンドを豊富にパイプ処理して実行し、いつでもコーディングで立ち往生するのを避ける方法を知っているはずです。

さて、この新たな知識をどのように活かしますか? PowerShell スクリプトで複数行のコマンドを書く方法を学ぶのはいかがでしょうか?

Source:
https://adamtheautomator.com/basic-powershell-commands/