LoginSignup
43
52

More than 5 years have passed since last update.

PowerShellの調べ方

Last updated at Posted at 2017-12-02

はじめに

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 DocsPowerShell Documentationがオフィシャルなリファレンスっぽい。

Reference(PowerShell Documentation内)

PowerShell DocumentationのページからReferenceに進むと、バージョンごとの新機能やコンソールコマンドライン(いつものPowerShellのコンソール)のリファレンスが提供されている。ここで要注意なのが、サイトの表示言語を「日本語」にしていると肝心要のリファレンスが表示されないということ2
英語で表示するとこんな感じに"> Reference"が表示される。

Cmdletの利用方法基本的にここから確認できる。Get-Serviceの場合は、こんな感じで引数の種類(ParameterSet)や引数の意味、実行例などが書かれている。

Aboutちょめちょめ(PowerShell Documentation内)

PowerShellの言語仕様、たとえばエイリアス、Preference系変数などなどは、Get-Help about_Preference_VariablesみたいにGet-Helpでも確認できる。この情報は、ReferenceのMicrosoft.PowerShell.Coreの"About"内にある。

僕がよく見るもの、見そうなものを並べておく。

PowerShell自体についてるもの

Get-Help

書いているときに、一番手軽に参照する方法。

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で取れるオブジェクトは、

ServiceController
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であること、BaseTypeSystem.ComponentModel.Componentであることが分かる。System.ComponentModel.Componentをクラスライブラリのリファレンスで見てみるとSystem.ServiceProcess.ServiceControllerが見つかる。
さらにSystem.ServiceProcess.ServiceControllerのリファレンスを見ると、たとえばサービスの表示名(DisplayNameプロパティ)なんかが取れそう。

試す。

ServiceController(続き)

PS C:\Users\bounoki> $svc.DisplayName
DHCP Client
PS C:\Users\bounoki> $svc.StartType
Automatic

WMF

そのうち調べる。


  1. PowerShell 5.1というのが何者なのか、よくわからない。というのも、PowerShell Documentationで5.1を選択しても、5.0のものが表示される。恐らく、WMF5.1に対応するPowerShell5なのでは、と思っているが、詳しく調べる必要がありそう。 

  2. 最近、日本語表示でもreferenceが表示されるようになったみたい。 

43
52
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
43
52