以下のように、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
コマンドに-Full
パラメータを追加してください。
以下のコードを実行して、Get-Help
コマンド自体のフル(-Full
)情報を取得してください。

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

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

プロセスがフリーズしてコンピュータが遅くなる場合は、
Get-Process
コマンドレットをStop-Process
コマンドレットにパイプしてプロセスを停止します。例:Get-Process -Id 1252 | Stop-Process
を実行します。ここで-Id 1252
は停止したいプロセスのプロセスIDを指定します。
Get-Historyを使用してPowerShellセッションの履歴を取得する
最近のコマンドを確認する必要がある場合があります。例えば、実行したコマンドが正しいか、実際にコマンドを実行したかどうかを確認する必要があります。PowerShellにはコマンドの履歴がありますか?はい! Get-History
コマンドレットは、現在のPowerShellセッションで実行した最近のすべてのコマンドのオブジェクトを返します。
以下のコマンドを実行して、現在のセッションで最近実行されたすべてのコマンドのリストを取得します。

履歴から特定のコマンドを表示する場合は、
-Id
パラメータの後に履歴のコマンドのID番号を追加します。たとえば、Get-History -Id 2
を実行して、履歴の2番目のコマンドを表示します。
Get-Serviceでシステムサービスを表示する
Get-Process
コマンドレットと同様に、PowerShellではシステムで実行されているすべてのサービスを表示することもできます。 Get-Service
コマンドレットを使用すると、データベースサーバーまたはコンピューターの画面の明るさを自動的に制御するアプリケーションなど、すべてのサービスを表示することができます。
以下のコマンドを実行して、システム上のすべてのサービスの一覧をテーブル形式で取得します。このコマンドを使用すると、停止しているサービスも表示できます。

おそらく特定の文字で始まるサービスを探しているかもしれません。その場合は、ワイルドカード文字(*)を追加すると便利です。
Get-Service
コマンドを以下のように実行して、表示したいサービスの最初の文字とアスタリスク(A*
)を渡します。ワイルドカード文字を追加すると、文字 ‘A’ で始まらないすべてのサービスをフィルタリングできます。

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

バックグラウンドジョブなので、ジョブがまだ実行中かどうか、または完了したかどうかを確認するにはどうすればよいですか?
Get-Job
cmdletを実行して、セッション内のすべてのジョブを取得します。
Set-Locationを使用して作業ディレクトリを変更
ディレクトリを変更する必要がある時があります。スクリプトやプログラムを特定の場所から実行する場合などですが、どのようにディレクトリを変更するのでしょうか?Set-Location
コマンドレットがその手助けをします。 Set-Location
コマンドレットは、コマンド内で指定したディレクトリに現在の作業ディレクトリを設定します。
以下のコードを実行して、現在の作業ディレクトリをC:\Users\hp\Desktopに設定できます。Computerのユーザー名であるhp
を自分のものに変更してください。
下のプロンプトで確認できるように、C:\Users\hp\Desktopが現在の作業ディレクトリになります。

Test-Pathを使用してパスが存在するか確認
存在しないファイルにアクセスしようとすると、PowerShellはバグを表示することがあります。それを回避する方法は?Test-Path
コマンドレットは直感的な構文で、パスが存在するかどうかを確認できます。
今、デスクトップにNewFolderという名前のフォルダを作成してください。
以下のTest-Path
コマンドを実行し、テストしたいパスを指定してください。この例では、コマンドはC:\Users\hp\Desktop\NewFolderパスの存在をテストします。
以下は、パスが存在するため、コマンドがTrueの値を返しました。それ以外の場合は、Falseの出力が得られます。

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
Export-CSVを使用してPowerShellオブジェクトをCSVにエクスポート
もしHTMLよりもCSV形式のレポートが良いと考えるなら、Export-CSV
コマンドレットを使用してください。ConvertTo-Html
コマンドレットと同様に、Export-CSV
コマンドレットを使用すると、データをCSVファイルにエクスポートできます。
以下のコマンドを実行して、PowerShellコマンド(Get-Command
)のリストを収集し、リストをCSVファイル(Export-CSV
)にエクスポートします。ファイルの名前はCommands.csv
です。
ConvertTo-Htmlコマンドレットと同様に、CSVファイルのエクスポートパスも指定できます。例:
Get-Command | Export-CSV C:\Temp\Commands.csv
Commands.csv ファイルを開くと、以下のようなものが表示されます。悪くありませんね。

Get-Commandを使用して利用可能なPowerShellコマンドをすべて表示
リストの最後のPowerShellコマンドはGet-Command
コマンドレットです。Get-Command
コマンドレットは基本的に、テーブル形式で実行可能なすべてのPowerShellコマンドを一覧表示します。ただし、前の例で見たように、Get-Command
ができることはそれだけではありません。
おそらく、特定の cmdlet またはエイリアスを選択的にリストしたいのでしょう。その場合は、Get-Command
cmdlet に -CommandType
パラメーターを追加して、指定したコマンドの種類で出力をフィルタリングします。 -CommandType
パラメーターの値は Alias
、Cmdlet
、または Function
にすることができます。
次のコマンドを実行して、名前が ‘G’ で始まる cmdlet のみをリストします(-CommandType Cmdlet
)。

Get-Command
出力をフィルタリングする別の方法は、Get-Command
出力を Select-Object
cmdlet にパイプ処理することです。ご存知のように、Get-Command
cmdlet によって返されるオブジェクトはテーブル形式です。そのテーブルでは、列名がオブジェクトから選択できるプロパティを表します。
以下の Get-Command
を実行して、すべての PowerShell コマンドのリストを収集し、各コマンドの定義プロパティを表示します(Select-Object -Property Definition
)。

結論
このチュートリアルでは、基本的な PowerShell コマンドの実行について詳細なガイドを提供しました。今では、コマンドを豊富にパイプ処理して実行し、いつでもコーディングで立ち往生するのを避ける方法を知っているはずです。
さて、この新たな知識をどのように活かしますか? PowerShell スクリプトで複数行のコマンドを書く方法を学ぶのはいかがでしょうか?
Source:
https://adamtheautomator.com/basic-powershell-commands/