技術ノート 特徴 Geek School: 初めての完全な PowerShell スクリプトの作成

Geek School: 初めての完全な PowerShell スクリプトの作成

Geek School: 初めての完全な PowerShell スクリプトの作成

数週間前、The Geek は、コマンド プロンプトを使用してコンピューターが最後に起動されたのがいつであるかを確認する方法を紹介しました。 Geek School for PowerShell の最後のインストールでは、同じことを行うための再利用可能な PowerShell コマンドを作成します。

Geek School: 初めての完全な PowerShell スクリプトの作成

このシリーズの以前の記事を必ずお読みください。

初めてのスクリプトの作成

Geek School: 初めての完全な PowerShell スクリプトの作成

まず最初に行う必要があるのは、探している情報にアクセスする方法を見つけることです。ここでは管理情報を扱っているため、おそらく WMI の使用を検討する必要があります。WMI には実際に Win32_OperatingSystem と呼ばれるクラスがあり、これを使用すると、オペレーティング システムに関する詳細情報 (前回の起動時刻など) を表示できます。

Geek School: 初めての完全な PowerShell スクリプトの作成

探している情報がどこにあるかがわかったので、ISE を開いて次のように入力します。

Geek School: 初めての完全な PowerShell スクリプトの作成

Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost |

Geek School: 初めての完全な PowerShell スクリプトの作成

Select-Object -Property CSName,LastBootUpTime

注: すべてがスクリーンショットに収まるようにコードを 2 行に分割する必要がありましたが、自由に 1 行に入力してください。 2 行に分割する場合は、パイプ文字が 1 行目の最後の文字であることを確認してください。

次に、緑色の「スクリプトの実行」ボタンをクリックするか、キーボードの F5 キーを押してコードをテストします。

WMI 時間は少しわかりにくい場合があります。つまり、LastBootUpTime プロパティを見ると、2013-03-19 at 18:26:21 と表示されていますが、何らかの理由で、WMI 担当者はそのすべてを 1 つの文字列に連結することにしました。幸いなことに、より高度ではありますが、より簡単な方法があるため、文字列を手動で解析することを心配する必要はありません。コードの Select-Object 部分を次のように変更する必要があります。

Select-Object -Property CSName,@{n=”最後に起動した”;

e={[Management.ManagementDateTimeConverter]::ToDateTime($_.LastBootUpTime)}}

ここで行っていることは、「Last Booted」というカスタム プロパティを作成し、その値が現在のパイプライン オブジェクトの LastBootUpTime プロパティで ToDateTime 静的メソッドを呼び出した結果である必要があることを指定することです。コードは次のようになります。

ここでコードを実行すると、最終起動時間がさらに読みやすくなります。

スクリプトの基本的な機能に満足したので、スクリプトを保存する必要があります。簡単にするために、次のように保存しましょう。

C:\Get-LastBootTime.ps1

次に、ISE の下半分に切り替えて、次のコマンドを実行します。

C:\Get-LastBootTime.ps1

素晴らしい!スクリプトは期待どおりに動作していますが、スクリプトにはまだ問題が 1 つあります。最終起動時間を取得したいコンピューターの名前をハードコードしました。値をハードコーディングする代わりに、スクリプトを使用する人がスクリプトを実行するコンピュータを選択できるようにパラメータを提供する必要があります。これを行うには、スクリプトの先頭に移動して次の操作を実行します。

パラメータ(

[文字列]$コンピュータ名

)

次に、ハードコードされた localhost 値を $ComputerName 変数に置き換えます。スクリプトは次のようになります。

スクリプトを保存し、ISE の下半分に戻ってスクリプトのヘルプを表示します。

ヘルプ C:\Get-LastBootTime.ps1

すばらしいですね。新しい ComputerName パラメーターを使用して、最終起動時刻を取得するコンピューターの名前を指定できるようになりました。残念ながら、まだいくつか間違っている点があります。第一に、ComputerName パラメーターはオプションであり、第二に、これは私が今まで見た中で最も醜い役に立ちます。そのため、これらの問題をすぐに修正しましょう。 ComputerName パラメーターを必須にするには、param ブロックの内容を次のように変更します。

[パラメータ(必須=$true)][文字列]$コンピュータ名

より良いヘルプ ファイルを作成するための最も一般的な方法は、コメント ベースのヘルプを使用することです。つまり、スクリプトの先頭に非常に長いコメントを追加するだけです。

<#

.概要

PC が最後に起動されたのがいつかを示します。

。説明

これは、PC が最後に起動した時刻を取得するための WMI ラッパー関数です。

.PARAMETER コンピュータ名

コマンドを実行するコンピューターの名前。

。例

Get-LastBootTime -ComputerName ローカルホスト

。リンク

#>

すべての作業が完了すると、次のようなスクリプトが完成するはずです。

それでは、新しいヘルプ ファイルを確認してみましょう。

ああ、素晴らしいですね!スクリプトが完成したので、最後にテストする必要があります。このため、ISE を終了して PowerShell コンソールに戻り、異常がないことを確認します。

このガイドで行ったように、単純な 1 つのライナーから始めて、それを積み上げていけば、すぐにコツを掴めるでしょう。今回はここまでです。次回の Geek School でお会いしましょう。

「 Geek School: 初めての完全な PowerShell スクリプトの作成」に関するベスト動画選定!

PowerShell入門 Part4 スクリプト・実行ポリシー・コメントベースのヘルプ
【プログラミング入門】PowerShell【RPA(自動操作)編】 ざっくりわかるプログラミング講座