あなたの最初の完全なPowerShellスクリプトを書くオタク学校
数週間前、The Geekが、コマンドプロンプトを使用してコンピュータが最後に起動された日時を確認する方法を説明しました。この最後のGeek School for PowerShellでは、同じことをするために再利用可能なPowerShellコマンドを作成します。.
シリーズの前の記事を必ず読んでください。
- PowerShellを使用してWindowsを自動化する方法を学ぶ
- PowerShellでコマンドレットを使用する方法
- PowerShellでオブジェクトを使用する方法を学ぶ
- PowerShellでの書式設定、フィルタリング、および比較の学習
- PowerShellでリモート処理を使用する方法を学ぶ
- PowerShellを使用してコンピューター情報を取得する
- PowerShellでコレクションを操作する
- PowerShellでジョブを使用する方法を学ぶ
- PowerShellを拡張する方法を学ぶ
- PowerShell変数、入力および出力の学習
あなたの最初のスクリプトを書く
最初にやるべきことは、探している情報にアクセスする方法を見つけることです。管理情報を扱っているので、WMIの使用を検討する必要があるでしょう。実際には、前回の起動時も含めて、オペレーティングシステムに関する詳細な情報を表示できるWin32_OperatingSystemというクラスがあります。.
これで、探している情報がどこにあるのかがわかったので、ISEを開いて次のように入力します。.
Get-WmiObject - クラスWin32_OperatingSystem - コンピューター名
選択オブジェクト - プロパティCSName、LastBootUpTime
注:スクリーンショットに収まるようにコードを2行に分割する必要がありましたが、1行で入力してもかまいません。 2行に分割する場合は、パイプ文字が1行目の最後の文字であることを確認してください。.
緑色の「スクリプトを実行」ボタンをクリックするか、キーボードのF5キーを押してコードをテストします。.
WMI時間は少しわかりにくいかもしれません。つまり、LastBootUpTimeプロパティを見れば、2013年3月19日の18時26分21秒になりますが、何らかの理由でWMIの担当者はこれらすべてを単一の文字列に連結することにしました。幸いなことに、より高度ではあるがそれを行うより簡単な方法があるので手動で文字列を解析することについて心配する必要はありません。このようになるようにコードの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つ問題があります。最後の起動時間を取得したいコンピュータの名前をハードコードしました。値をハードコーディングする代わりに、スクリプトを使用している人が誰に対してスクリプトを実行するかを選択できるように、パラメータを指定する必要があります。これを行うには、スクリプトの先頭に移動して次の操作を行います。.
param(
[文字列] $ ComputerName
)
次に、ハードコードされたlocalhost値を$ ComputerName変数に置き換えます。スクリプトは次のようになります。
スクリプトを保存してから、ISEの下半分に戻ってスクリプトのヘルプを表示します。.
ヘルプC:\ Get-LastBootTime.ps1
これで、新しいComputerNameパラメータを使用して最後の起動時間を取得したいコンピュータの名前を指定できます。残念ながら、まだいくつか問題があります。まず、ComputerNameパラメータはオプションです。次に、これは私が今まで見た中で最も醜い有用なので、これらの問題をすぐに解決しましょう。 ComputerNameパラメーターを必須にするには、paramブロックの内容を次のように変更します。.
[パラメータ(必須= $ true)] [文字列] $ ComputerName
よりよいヘルプファイルを作成するための最も一般的な方法は、コメントベースのヘルプを使用することです。つまり、スクリプトの先頭に長いコメントを追加するだけです。.
<#
.概要
PCが最後に起動した日時を表示します.
.説明
これはあなたのPCが最後に起動した時間を得るためのWMIラッパー関数です。.
.パラメータComputerName
コマンドを実行したいコンピューターの名前.
.例
Get-LastBootTime - コンピュータ名ローカルホスト
.リンク
www.howtogeek.com
#>
すべて完了したら、次のようなスクリプトになります。.
それでは、新しいヘルプファイルをチェックしてみましょう。.
ああ、すごいね!スクリプトが完成したので、最後にもう1つ行うことがあります。それはテストです。このため、ISEを終了してPowerShellコンソールに戻り、異常がないことを確認します。.
このガイドで説明したように、単純なライナーから始めてその上に積み重ねていくだけで、すぐに手に入るでしょう。今回は皆さん、これで終わりです。次回のGeek Schoolのインストールでお会いしましょう。.