はじめに
PowerShellをちょこちょこと書くようになって、www.python.orgのようにライブラリリファレンスとかチュートリアルがまとまっているページが無いなぁ(あるのかもしれないけど、いまいち情報が探しにくい)と思うようになったので、特によく見るものをまとめることに。
最近のMicrosoftのドキュメントはURLにもこだわりが見られるので、基本ドキュメント内にリンクを張っておくけどURLもべた書きしておく。
情報は2017/12/03時点のもので、更新されて古い情報になってることがあるかもしれないのでご留意のほど。
調べ方
はじめに抑えておくべきは、PowerShellはPowerShellのドキュメントだけ調べてもダメ、ということ。もう少し詳しく書くと、どうも、以下の構成要素を理解する必要がありそう。当然、各構成要素ごとに参照するドキュメントが異なるのだが、そのことを分かっているだけで飛躍的に調べやすくなる。
僕がスクリプト書く都合でPowerShellのバージョンは5(5.1)で纏めている1。欲しいバージョンに応じて読み替えること。
構成要素 | 概要 |
---|---|
PowerShell | PowerShell自体。 |
.NET Framework | PowerShellは(LinuxのShellScrptがコマンドを利用しているように).NETを利用しており、.NETのAPIを呼んだりする。 |
WMF | Windows Management Framework。Windowsの管理用フレームワーク(直訳)だが、PowerShellをWindowsの管理目的で利用することを考えるとWMFを意識しておく必要がある。 |
PowerShell
PowerShell Documentation
基本的には、Microsoft Docsの PowerShell Documentationがオフィシャルなリファレンスっぽい。
Reference(PowerShell Documentation内)
PowerShell DocumentationのページからReferenceに進むと、バージョンごとの新機能やコンソールコマンドライン(いつものPowerShellのコンソール)のリファレンスが提供されている。ここで要注意なのが、サイトの表示言語を「日本語」にしていると肝心要のリファレンスが表示されないということ2。
英語で表示するとこんな感じに"> Reference"が表示される。
Cmdletの利用方法基本的にここから確認できる。Get-Service
の場合は、こんな感じで引数の種類(ParameterSet)や引数の意味、実行例などが書かれている。
- https://docs.microsoft.com/en-us/powershell/scripting/powershell-scripting?view=powershell-5.1
- https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Management/Get-Service?view=powershell-5.1
Aboutちょめちょめ(PowerShell Documentation内)
PowerShellの言語仕様、たとえばエイリアス、Preference系変数などなどは、Get-Help about_Preference_Variables
みたいにGet-Helpでも確認できる。この情報は、ReferenceのMicrosoft.PowerShell.Coreの"About"内にある。
僕がよく見るもの、見そうなものを並べておく。
- about_Arrays
-
about_Automatic_Variables
- PowerShellの状態が格納される変数。たとえば
$_
、$ERROR
、$PSVERSIONTABLE
。環境変数とかリターンコードに近い。 - https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-5.1
- PowerShellの状態が格納される変数。たとえば
- about_Eventlogs
- about_Functions_Advanced
- about_Functions_Advanced_Parameters
- about_Hash_Tables
- about_Modules
-
about_Preference_Variables
- Preference変数について。
$ErrorActionPreference
など。デフォルト値も書いてある。 - https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_preference_variables?view=powershell-5.1
- Preference変数について。
- about_Profiles
PowerShell自体についてるもの
Get-Help
書いているときに、一番手軽に参照する方法。
PS C:\Users\bounoki> Get-Help Get-Service
.NET Framework
PowerShellは.NET Frameworkで動いている以上に、PowerShellのスクリプト内で.NET Frameworkを触れたりする。動かしている.NET Frameworkのバージョンに注意してドキュメントを調べる必要がある。
WMFのバージョンも合わせて、PowerShellのシステム要件(PowerShell Documentationのセットアップ内)に書かれている。
MSDN
MSDN(Microsoft Developpers Network)は、いつでもMicrosoft環境での開発において立ち返る場所である(確信)。
僕はWMF5.1をインストールしていて、「WMF 5.1 には .NET Framework 4.5.2 (またはそれ以上) が必要」であると書かれているので、ここでは.NET Frameworkのリファレンスは.NET Framework 4.6 および 4.5を参照している。
.NET Framework クラスライブラリ
.NET Frameworkクラスライブラリを、C#で開発する際と同じように参照するだけ。
たとえば、Get-Service
で取れるオブジェクトは、
PS C:\Users\bounoki> $svc = (Get-Service dhcp)
PS C:\Users\bounoki> $svc.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False ServiceController System.ComponentModel.Component
のようにServiceController
であること、BaseType
がSystem.ComponentModel.Component
であることが分かる。System.ComponentModel.Component
をクラスライブラリのリファレンスで見てみると、System.ServiceProcess.ServiceController
が見つかる。
さらにSystem.ServiceProcess.ServiceController
のリファレンスを見ると、たとえばサービスの表示名(DisplayNameプロパティ
)なんかが取れそう。
試す。
PS C:\Users\bounoki> $svc.DisplayName
DHCP Client
PS C:\Users\bounoki> $svc.StartType
Automatic
WMF
そのうち調べる。