18Windows管理者にとって最も便利なPowershellコマンド

2021年12月18日 19859 ビュー 最も便利なPowershellコマンド

このSゾーンでは、Victorがシステム管理者にとって最も便利なPowerShellコマンドの究極のリストを共有しています。コマンドごとに、構文とパラメーターについて説明します。次に、いくつかの例で終わります。





このSゾーンでは、PowerShellコマンド、PS、PowerShellコマンドレット、およびコマンドレットを同じ意味で使用します。

投稿トピックを閲覧する



コマンドレットを検索してヘルプを取得するための最も便利なPowershellコマンド

最も便利なPowerShellコマンドについては、それらを見つける方法を学ばずに話すことはできません。以下は、コマンドレットを見つけるのに役立つPowerShellコマンドです。

Get-Command

Get-Commandコマンドレットは、PowerShellの初心者が学習し、使用方法を知っている必要がある最初で最も重要なPSです。どうして?他のPowerShellコマンドレットを見つけるのに役立ちます。これを実行できるコマンドよりも重要なコマンドはどれですか?



コンピュータ内のすべてのPSコマンドを見つけるには、以下のコマンドを実行するだけです。



Get-Command
最も便利なPowerShellコマンド

Get-Commandコマンドレットの結果を理解する

Get-Command出力の結果には4つの列があります

  1. CommandType :これは、コマンドがエイリアス、コマンドレット、または関数のいずれであるかを示します。
  2. 名前 :名前は、実際に実行するコマンドです。
  3. バージョン :これはPowerShellバージョンです
  4. ソース :PSコマンドのモジュール。

この情報を使用して、Get-Commandからの結果をフィルタリングできます。 EventLogという単語を含むPowerShellコマンドを表示したい場合、以下のコマンドを実行すると、作業が完了します。



Get-Command -Name *EventLog

アスタリスクを追加した場所に注意してください。これは私が知っているからです
EventLogは、コマンドレットの名詞部分です。ただし、最初にアスタリスクを追加してみて、最後に試してみることができるかどうかさえわからない場合は。



以下は前のコマンドの結果です。

Get-Commandパラメーター

最後に、先に進む前に、Get-Commandコマンドレットのパラメーターについて説明します。

Get-Commandコマンドに関するすべてのパラメーターと情報を取得するには、以下のコマンドを実行します。

Get-Help Get-Command -Full

これにより、Get-Commandコマンドレットに関するすべての情報が得られます。

次に、Get-Helpコマンドレットについて説明します。

助けを得ます

Get-Commandコマンドレットが必要なコマンドレットを検出している間、Get-Help PowerShellコマンドは、コマンドを実行するために必要な情報を提供します。

Get-Helpコマンドレットを使用する最も簡単な方法は、Get-Helpに続けて、情報が必要なコマンドを入力することです。 Get-EventLogコマンドレットの詳細については、次のコマンドを実行してください。

Get-Help Get-EventLog

これにより、Get-EventLogPowerShellコマンドに関する基本情報が得られます。以下の結果を参照してください。

Get-Helpコマンドのいくつかの重要なパラメーター

他のPowerShellコマンドレットと同様に、Get-Helpコマンドレットにはいくつかのパラメーターがあります。以下は、必要となる最も重要なパラメータです。

  1. -詳細詳細 パラメーターは、コマンドSYNTAX、PARAMTERS、ALIASES、およびREMARKSを提供します。
  2. -満杯 :フルは、によって提供される同様の情報を提供します 詳細 各パラメーターに関する詳細情報を含むパラメーター
  3. -例 :コマンドレットの使用方法の例を示します。これは、これまでにコマンドレットを使用したことがなく、続行する方法がわからない場合に非常に役立ちます。
  4. -オンライン :コマンドレットのオンラインヘルプページを開きます。
PSコマンドレットのパラメーターを表示するには、PSにコマンドレットを入力し、スペースキーを押し、ハイフンを入力してからTabキーを押します。 Tabキーを押すと、使用可能なパラメータをスクロールします。

ファイルとフォルダーを管理するための最も便利なPowershellコマンド

PowerShellコマンドを見つける方法がわかったので、内部で説明します。最も便利なPowerShellコマンドの次のセットは、ファイルとフォルダーの管理に役立つコマンドレットです。

Get-ChildItem

指定された場所にあるアイテムを取得します。ドライブCのフォルダを一覧表示するには、次のコマンドを実行します。

Get-ChildItem c:/

これにより、すべての最上位フォルダーが一覧表示されます。すべてのファイルを一覧表示するには、フォルダーにサブフォルダーを含め、–を使用します 再帰 パラメータ。

プロのヒント
Get-ChildItemコマンドレットletを他のコマンドレットと組み合わせて、指定したディレクトリ内の各フォルダのサイズを計算できます。

アイテムのコピーとアイテムの移動

Get-ChildItemコマンドレットを使用してフォルダー内のアイテムを一覧表示し、その結果をCopy-Itemコマンドレットにパイプしてアイテムを新しい場所にコピーできます。以下のコマンドはその仕事をします:

Get-ChildItem C:Dropbox | Copy-Item -Destination C:NewFolder
上記のpowershellコマンドは、最上位のフォルダーとファイルのみをコピーします。サブフォルダーとファイルはコピーしません。サブフォルダを含むすべてのファイルとフォルダをコピーするには、–を含めます。 再帰 以下に示すように、Get-ChildItemコマンドのパラメーター:
Get-ChildItem C:Dropbox -Recurse | Copy-Item -Destination C:NewFolder

Copy-Itemコマンドレットがアイテムをある場所から別の場所にコピーしている間、Move-Itemコマンドレットはアイテムを移動します。

削除-アイテム

このコマンドレットは、指定されたアイテムを削除します。 Copy-ItemコマンドレットやMove-Itemコマンドレットと同様に、Get-ChildItemの出力をRemove-Itemにパイプすることができます。

Remove-Itemコマンドレットは、Windowsファイルを含むコンピューター内のすべてのファイルとフォルダーを削除する可能性があるため、注意して使用してください。 プロのヒント
Get-ChildItemの出力をRemove-Itemにパイプすることにより、定期的にいくつかのログファイルを削除する簡単なスクリプトを作成できます。 Windowsスケジューラを使用して、指定した時間に実行するようにPSスクリプトをスケジュールできます。

レポートに最も役立つPowershellコマンド

アイテムをCVSにエクスポートしたり、テキストファイルやHTMLファイルにエクスポートしたりするために使用できるPowerShellコマンドのセットは3つあります。次に、これら3つについて説明します。

エクスポート-Csv

Export-Csvは文字列のセットをCSVに変換し、ファイルに保存します。このコマンドレットは、レポート作成において非常に重要です。

Export-CSVの使用法を示すには、次のコマンドを実行します。

Get-Command -Verb Export

コマンドの結果は次のとおりです。

PowerShellコマンド

前のコマンドの出力をExport-CSVにパイプして、前の画像に示されている結果のCVSレポートを作成できます。

このタスクを実行するためのコマンドは次のとおりです。

Get-Command -Verb Export | Select-Object CommandType, Name, Version, Source | Export-Csv -NoTypeInformation -Path C:NewFolderExportCommands.CSV

パスにCSVファイル名を含める必要があることに注意してください。別のパラメータもあります -NoTypeInformation 。 -NoTypeInformationの詳細については、この記事「PowerShell NoTypeInformation:アプリケーションと使用法」を参照してください。

前のコマンドには別のコマンドレットがあります。 Select-Object 。このコマンドレットは、CSVに返してエクスポートする列を指定するために使用されました。除外した場合 Select-Object CSVの出力には、多くの不要なデータが含まれます。このチュートリアルの後半で、Select-Objectについて説明します。

参考までに、CSVファイルの出力を以下に示します。

PowerShellコマンド

このレポートは前の画像に示されている出力と非常に似ていますが、レポートとしてより役立ちます。 CSVファイルを上司に送信できます!

アウトファイル

Out-fileコマンドレットは出力をテキストファイルに送信します

次のコマンドは、Get-CommandPowerShellコマンドレットからCSVではなくテキストファイルにエクスポートします。

Get-Command -Verb Export | Select-Object CommandType, Name, Version, Source | Out-File C:NewFolderExportCommands.txt

テキストファイルの結果は次のとおりです。同じレポートがテキストファイルになりました。なんて素晴らしいことでしょう。

このレポートを毎日実行し、前日のコンテンツを上書きしたくなく、追加したい場合はどうなりますか。このコマンドはその仕事をします。

Get-Command -Verb Export | Select-Object CommandType, Name, Version, Source | Out-File C:NewFolderExportCommands.txt -Append

プロセスを管理するための最も便利なPowershellコマンド

Windows管理者にとって最も便利なPowerShellコマンドのもう1つのセットは、Windowsプロセスを管理するためのコマンドレットです。それらを見てみましょう。

Get-Process

このPowerShellコマンドレットには、ローカルコンピューターで実行されているすべてのプロセスが一覧表示されます。また、リモートコンピュータでプロセスを実行することもできます– コンピュータネーム パラメータ。

ただし、パラメーターを指定せずにGet-Process PowerShellコマンドレットを実行すると、ローカルコンピューターで実行されているすべてのプロセスが返されます。これを試すには、以下のコマンドを実行します。結果を下の画像に示します。

Get-Process

開始プロセスおよび停止プロセスのPowerShellコマンド

Get-Process PowerShellコマンドは、Start-ProcessおよびStop-Process PowerShellコマンドレットと連携して、プロセスまたは一連のプロセスを開始または停止できます。

Get-Process PowerShellコマンドを実行したが、特定のプロセスID 10500のプロセスを停止したい場合は、以下のコマンドで処理を実行できます。

Get-Process -Id 10500 | Stop-Process
警告!
間違ったプロセスを停止するとコンピューターが不安定になる可能性があるため、Stop-ProcessPowerShellコマンドレットを注意して使用してください。

プロセスを開始するには、Get-ProcessPowerShellコマンドの出力をStop-ProcessPowerShellコマンドレットにパイプします。

イベントログを管理するための最も便利なPowerShellコマンド

イベントログ管理は、Windows管理者にとって最も重要なタスクの1つです。したがって、PowerShellコマンドの次のセットは、イベントログの管理に役立ちます。

Get-EventLog

Get-EventLog PowerShellコマンドレットは、指定されたイベントログのイベントを取得します。ローカルまたはリモートのコンピューターでイベントを取得できます。リモートコンピューターからイベントを取得するには、–を使用します コンピュータネーム リモートコンピュータを指定するパラメータ。ただし、リモートコンピューターにアクセスするには、適切なアクセス許可が必要になることに注意してください。

システムイベントログに記録された最後の5つのイベントを取得するには、以下のコマンドを実行します

Get-EventLog -LogName System -Newest 5 
プロのヒント
最後のコマンドは、トラブルシューティングの目的で使用できます。

クリア-EventLog

ご想像のとおり、より多くのイベントログコマンドレットがありますが、このチュートリアルではこの2つについて説明します。

Clear-EventLogは、指定されたイベントログ内のすべてのイベントをクリアします。コマンドレットは、ローカルコンピューターとリモートコンピューターの両方でイベントログをクリアできます。

次のコマンドは、ローカルコンピューターからWindowsPowerShellという名前のすべてのイベントをクリアします

Clear-EventLog 'Windows PowerShell'
以下のコマンドを実行するには、管理者としてPowherShellを開く必要があります。右クリックして[管理者として実行]を選択します。

コンピューターに関する情報を取得するための最も便利なPowerShellコマンド

ネットワーク上のコンピューターに関するデータ(コンピューター名、BIOSバージョン、RAMサイズ、ディスク情報など)を収集する必要がある場合は、Get-WmiObject POwerShellCmdletが最適です。この強力なコマンドレットを調べてみましょう。

Get-WmiObject

Get-WmiObjectには、–というパラメータがあります。 クラス これにより、アクセスするWMIオブジェクトを指定できます。次のコマンドは、WMIクラスのリストを取得します
Get-WmiObject -List -Class Win32*

WMIクラスの名前がわかれば、Get-WmiObjectを実行して、ローカルコンピューターまたはリモートコンピューターから有用な情報を返すことができます。以下は、必要になる可能性のある最も重要なWMIクラスのリストです。

  • Win32_PhysicalMemory –使用可能なメモリに関する情報
  • Win32_Processor –プロセッサ情報
  • Win32_LogicalDisk –論理ディスクドライブ情報
  • Win32_DiskDrive –物理ディスク情報
  • Win32_OperatingSystem –オペレーティングシステムに関する情報
  • Win32_BaseBoard –マザーボードに関する情報を取得します

オペレーティングシステムに関する情報を取得するには、次のコマンドを実行します。

Get-WmiObject -Class Win32_OperatingSystem

リモートPowerShellセッションに接続するための最も便利なPowerShellコマンド

PSリモーティングについて話さずにPowerShellコマンドについて話し合うことはできません。 Windowsシステム管理者は、PowerShellを使用してコンピューターにリモート接続する必要があります。

必要なコマンドは次のとおりです。

Enter-PSSessionおよびExit-PSSessionPowerShellコマンド

Enter-PSSession PowerShellコマンドを使用すると、1台のコンピューターでリモートPSセッションをインタラクティブに開始できます。リモートコンピューターでの作業が終了したら、Exit-PSSessionコマンドを使用してセッションを終了します。

Computer1というコンピューターでリモートPSセッションを開くには、次のコマンドを実行します。

Enter-PSSession Computer1

呼び出す-コマンド

Enter-PSSession PowerShellコマンドレットを使用すると、1台のリモートコンピューターでコマンドを実行できますが、Invoke-Commandコマンドレットを使用すると、1台以上のリモートコンピューターでコマンドを実行できます。

Computer1、Computer2、Computer3でGet-Processコマンドを実行する場合は、次のコマンドを実行します。

Invoke-Command -ComputerName Computer1, Computer2, Computer3, -ScriptBlock {Get-Process}

New-PSSession

New-PSSession PowerShellコマンドレットを使用すると、リモートコンピューターとの永続的なセッションを開くことができます。セッションは永続的であるため、変数にリモートセッションを追加することをお勧めします。

ルートベリゾンエリプシス10

コンピューターComputer1、Computer2で永続的なリモートPSセッションを開くには、次のコマンドを実行します。

$session = New-PSSession -ComputerName Computer1, Computer2

PSセッションが確立され、$ session変数に格納されている場合、リモートセッションで通常のPowerShellコマンドを実行できます。
呼び出し-コマンドPowerShellコマンドレット。

リモートPowerShellセッションの最後の例として、リモートコンピューターでGet-Processを実行するには、次のコマンドを実行します。

Invoke-Command -Session $session {$Processes = Get-Process}
複数のコンピューターがあるため、Get-Processコマンドの結果を$ Processesという変数に格納しました。結果を変数に保存すると、データ操作が簡単になります。 ForEachループを使用して、データを抽出および整理できます。

これで、最も便利なPowerShellコマンドの究極のリストが完成しました。このSゾーンがお役に立てば幸いです。

または、このページの最後にある[返信を残す]フォームを使用して、質問したり、コメントを残したり、フィードバックを提供したりすることもできます。

最後に、その他のPowerShell Sゾーンについては、WindowsPowerShellページにアクセスしてください。