【PowerShell】コマンド

基本的なコマンドレットやよく使うコマンドなど、学習していきたいと思います。

1. 「Ping」コマンド

下記コマンドを実行して、自分のネットワークや対象機器からの反応があるかどうか確認がとれます。

ping(対象機器など)

単に「ping」だけ入力して実行すると、




画像のように使用法やオプションなどが表示されました。


例:

google に繋がっているか確認しました。

10. 「Get-Command」コマンド

下記、コマンドを入力することでPowerShell のコマンド一覧が240種類ぐらい表示されます。

「Get-Command」




一覧が表示されました。


コマンドレット一覧を表示したい場合

下記コマンドで実行します。

Get-Command -type cmdlet




コマンドレット一覧が表示されました。


11. 「Get-ChildItem」コマンド

下記コマンドで、フォルダに含まれるサブフォルダやファイル情報を表示できます。

Get-ChildItem




カレントディレクトリのファイルやフォルダが表示されています。


12. 「Get-AppxPackage」コマンド

下記コマンドで、インストールされているストアアプリ一覧が表示されます。

Get-AppxPackage




下記の画面が表示されました。


13. 「Get-AppxProvisionedPackage -online」コマンド

管理者権限のあるPowerShell の方で実行してください。

下記、コマンドでもインストールされているストアアプリを確認でき、「Get-AppxPackage」よりもシンプルで確認しやすい表示になります。

Get-AppxProvisionedPackage -online




下記のような画面が表示されました。


14. エラー時の対処

Try-Catchの構文について知っておきましょう。

Try-Catchは、PowerShell におけるエラー構文です。

処理の中で発生したエラーを例外(Exception)といいます。


予期しない事態が発生した際に、Try-Catch文で例外をキャッチすることで、例外発生個所をスキップしたり、例外の内容に沿って処理を行ったりと適切に処理を行ってくれます。

以下、Try-Catchの基本構文です。

try {
# プログラムの処理を記述します
}
catch {
# エラーが発生した場合の処理を記述します
}

tryブロック内には、実行したい処理を記述します。

tryブロックで例外エラーを検知した時に、「-ErrorAction Stop」を付与しておくと、Cmdletは例外を投げてくれます。


catchブロック内には、例外が発生した時の処理を記述します。

catchブロックは省略が可能ですが、省略すると、例外が発生したときに、ErrorAction Stopにより中断されます。

14-1. try-catch-finally文の使い方

try {
    // プログラムの処理を記述します
} catch (Exception e) {
    // エラー発生時の処理を記述します
} finally {
    // エラー発生有無に関わらず必ず最後におこなう処理を記述します
}

14-2. finallyの処理が必要な時

どんな時に、エラー処理finallyが必須なのかというと、

例:ファイルを扱う処理の場合

ファイルに書き込みを行う場合のプログラムの処理は以下の流れになります。


 ①ファイルを開く

 ②ファイルに書き込む

 ③ファイルを閉じる


もしこのプログラムを実行して、③に到達する前にエラーが発生した場合、ファイルが開いたまま、そのままプログラムが終了してしまいます。

書き込み中のファイルを開いたままの状態になってしまうため、エラーが発生していても、必ず閉じなければいけません。

こういったパターンの時には、finallyで閉じる処理を記述する必要があります。

14-3. エラーハンドリングとは

エラーハンドリングとは、コンピュータープログラムが実行時にエラーが発生した場合、あらかじめ用意しておいた処理を行うということです。

エラーハンドリングには、検知、伝達、対処が含まれます。

14-4. エラーの種類について

Terminating Error

エラーが発生した場合は処理を中断します。

構文のエラーやメモリの容量が足りない時にエラーになります。

Terminating Error はエラーハンドリングで取得されます。

Non-Terminating Error

エラーは発生しますが、PowerShell の処理は継続します。

エラーハンドリングで取得できません。スクリプトで発生する多くのエラーはNon-Terminating Errorだと言われており、エラーが発生しても処理は継続するパターンになります。

Non-Terminating Errorの中断方法

処理を中断したいところに「-ErrorAction-stop」を記述します。

もう一つは、「$ErrorActionPreference」を使用します。

これはPowerShell の変数で、全てのコマンドレットで発生したエラーを取得してどのように動作するか指定することができます。


デフォルトの動作では$ErrorActionPreferenceで定義されており、Continue状態になっているので、エラーをキャッチせずに処理を続行してしまいます。

変更する場合は Stopなどをこの変数に代入しましょう。

$ErrorActionPreference = "Stop"

デフォルトのContinueは、エラーを表示しても、可能な場合は次の処理を続けます。

SilentlyContinueは、エラーを無視します。コンソールにエラーが表示されません。

Stopは、エラーを表示し、スクリプトを中断します。

Inquireは、エラーに対しての動作について処理を継続するか中断するかをユーザーに聞きます。

15. まとめ

いろいろなコマンドがでてきて、どんな時に使用するのか、またどんな感じに使用するのかイメージがつきました。

コマンド操作で業務を効率化できるのはもちろんのこと、他の言語にもあるようなエラーがおきた際の対処についても、あらかじめ入力しておくことで適切に処理できることが分かりました。


PowerShell が使用できる場はたくさんありそうですね。

2. 「Get-ChildItem」コマンド


3. 「hostname」コマンド

下記のコマンドで、ホスト名を取得することができます。


hostname




ホスト名が表示されました。

4. 「getmac」コマンド

下記のコマンドであMACアドレスを取得できます。


getmac




画像のように表示されます。

物理アドレス(MACアドレス)を確認しましょう。

5. 「Get-Date」コマンド

日付を扱うためのコマンドは多数あり、よく使われます。

下記コマンドは、現在の日時を取得します。

Get-Date




現在の日時が表示されました。


下記、コマンドは指定した日数を加えた日時を取得します。

(Get-Date).AddDays()


例:()内に、3を入力してみました。

(Get-Date).AddDays(3)

2023/08/31 16:58:37 +3日後 が表示されました。


下記、コマンドは指定した時間を加えた日時を取得します。

(Get-Date).AddHours()


例:()内に、5を入力してみました。

(Get-Date).AddHours(5)

2023/08/31 16:59:12 +5時間後 が表示されました。

6. 「Copy-Item」コマンド

Copy-Itemコマンドは、ファイルやフォルダをコピーします。

ファイルのコピーをしてみようと思います。

Copy-Item -Path "F:\ドキュメント" -Destination "F:\ドキュメント2" -Recurse



例:

下記、コマンドを使用して、test1を同じフォルダにコピーして、test2を作成していきたいと思います。

Copy-Item -Path "C:\Users\81802\OneDrive\Desktop\PowerShell\test1" -Destination "C:\Users\81802\OneDrive\Desktop\PowerShell\test2" -Recurse





test1がコピーされ、test2のファイルが作成されました。

7. 「-replace」コマンド

-replaceは、文字列の一部を置き換えるコマンドになります。


例: "こんにちは、PowerShell " -replace "PowerShell","太陽"


8. エクスペリエンス インデックス

エクスペリエンスインデックスとは、ハードウェアの性能を測定して、Windowsが評価した指標(スコア)のことをいいます。

ハードウェアの性能について確認したいときに、PowerShellを使用します。

9. 「WinSat」コマンド

パソコンの性能やスコアを確認したいときには、起動時にWindows PowerShell (管理者)を選択して、 管理者権限でWindows PowerShellを実行します。


下記のコマンドで、パソコンの性能評価を調べることができます。

Winsat formal(winsatとformalの間は半角スペース)




パフォーマンスを評価中と出てくるので、結果がでるまで待ちます。




計測されたCPUやメモリなどのハードウェアのパフォーマンスが表示されます。


下記のコマンドで、保存されている試験データから、スコア(点数)だけを取り出して表示します。

Get-CimInstance Win32_Winsat



スコア(点数)の見方

スコアの点数では、最高点が9.9で、数字が高いほどパフォーマンスがいいことを表しています。

なお、「D3DScore」については、常に9.9点が表示されます。


「CPUScore」:
プロセッサ(CPU)の速度(1秒あたりの計算速度)

「D3DScore」:
ゲームなどのグラフィックスの3D処理のスコア(Windows 8.1/10では計測されない)

「DiskScore」:
プライマリハードディスクのスコア(データ転送速度)

「GraphicsScore」:
2Dグラフィック性能のスコア

「MemoryScore」:
メモリの1秒あたりの処理速度のスコア

「TimeTaken」:
計測日時を表し、「MostRecentAssessment」は直近のデータを意味します

「WinSATAssessmentState」:
計測状態を表し、「1」は計測済みであることを意味します

「WinSPRLevel」:
パソコン全体の性能に対するスコア

OSごとの各スコアの最低値と最高値

 ・Windows Visa:1.0~5.9

 ・Windows 7:1.0~7.9

 ・Windows 8/8.1/10:1.0~5.9