私以外の人にとっても待望であったであろう、 TechNet のスクリプトギャラリーとPowerShell ISEとの統合アドオンScript Browser for Windows PowerShell ISEがMS公式から公開されました。
これで、 9000を超えるスクリプトをあなたの手元のPowerShell ISEでダウンロード、保存、利用できます。
今回は、ダウンロード、インストール、利用、そして注意事項までご紹介します。
PowerShellはOneGetの情報もありましたが、どんどん足りなかった機能をリリースしています。どうか、そのメリットを最大限に享受していただければ。
対象
対象となるOSとか.NETとか必要なサービスは大事です。
PowerShell ISEはPowerShell 2.0~、当時は .NET Framework 3.5を要して利用できました。ではScript Browser for Windows PowerShell ISEではどうでしょうぁ。
OS
x86とx64の両方がサポートされています。
| ワークステーション系 OS | サーバー系 OS |
|---|---|
| Windows 7 | Windows 2008 R2 |
| Windows 8 | Windows 2012 |
| Windows 8.1*1 | Windows 2012 R2 |
Windows Management Framework (WMF)
- WMF 3.0以上
つまり、PowerShell 3.0以上を指します。WMF3.0以上というのは、結構今後も最下辺バージョンになりそうです。機能的にも、今後のOSとしても。
.NET Framework
- .NET Framework 4.5以上
必要な機能
Windowsサーチサービスが必要です。にゃうん。
- Windows Search Service

Cmdletで探すならこうですね。
Get-Service WSearch
結果です。
C:\Users\acquire> Get-Service WSearch Status Name DisplayName ------ ---- ----------- Running WSearch Windows Search
ダウンロード
Microsoft Download Centerからどうぞ。
ダウンロードの簡略化
Microsoftのライセンスの同意したということであれば、さくっとダウンロードしてインストール起動まで行うスクリプトをどうぞ。
インストール
- ダウンロードしたmsiを管理者で実行して、インストールしてください。*2
- 外部モジュールでアドオンとなるので、インストールの前/後どちらでもいいので、ExecutionPolicyをRemoteSignedやByPass *3
Set-ExecutionPolicy RemoteSigned
実行
PowerShell ISEの起動時に自動読み込まれます。
これまで右側にはCommandペインしかなかったのに、Script AnalyzerとScript Browserが加わっているのがわかります。

利用
詳しい英語の説明はこちらにあります。
細かく見ていきましょう。
注意
このScript Browser for Windows PowerShell ISEですが、設定言語(Set-Calcure)によっては、読み込みできません。
その判別は、Languageにある言語かどうかです。日本語は大丈夫ですが、Sweden (スエーデン) のsv-SEではエラーが出たりします。


Set-Culture sv-se ise
Exception calling "Add" with "3" argument(s): "Cannot create element because an exception occurred with the message: Input string was not in a correct format..
Parameter name: controlType"
At C:\Users\acquire\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1:6 char:1
+ $scriptBrowser = $psISE.CurrentPowerShellTab.VerticalAddOnTools.Add(' ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ArgumentException
Exception setting "SelectedAddOnTool": "Value cannot be null.
Parameter name: value"
At C:\Users\acquire\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1:8 char:1
+ $psISE.CurrentPowerShellTab.VisibleVerticalAddOnTools.SelectedAddOnTo ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], SetValueInvocationException
+ FullyQualifiedErrorId : ExceptionWhenSetting
日本語 (Set-Culture ja-JP) や英語 (Set-Culture en-US) では大丈夫なので、日本国内では余り気にすることは少ないでしょう。
Set-Culture ja-JP ise #問題ない Set-Culture en-US ise #問題ない
Script Browser
機能の1つが、 TechNet のスクリプトギャラリーとの統合です。
タブを、Script Browserに切り変えると、TechNetスクリプトギャラリーにいちいち行ってダウンロードするまでもなく、ここで閲覧、ダウンロードが可能です。

検索
検索バーに、例えばAzureと入れると、 Azureと名前の入ったものだけが抽出されます。やったね。

並び替え
Sortからは当然並び替えもできます。

設定画面
英語だけ? ではありません。
右にある歯車アイコンから設定画面にいけます。

- Languageからは、日本語を含めて各種言語に対応
- Download Settingsで、ScriptBroserでダウンロードしたときのフォルダを設定可能
- 某プロキシ対応が必要な方も、設定が可能

日本語を選んでApplyすれば、各所で日本語がでるでしょう。

詳細ビュー
気になる結果でダブルクリックすると詳細画面に行きます。

- Preview
スクリプトのプレビューができます。あくまで全体ではなく、一部の場合がありますが、うれしいですね。

- Download
複数のファイルだったりしますので、任意のダウンロードを。

- Description
スクリプトの詳細がかかれています。PowerShellスクリプトってなぜかみなさん説明きっちり書きますよね。いいことです。

他にも
他にも、お気にいりに入れたりできたり。一度使ってください。ぜひ。
Script Analyzer
Script Browser for Windows PowerShell ISEのインストールで一緒に入るのが、 PowerShellスクリプトの解析をしてくれる Script Analyzer です。
ISESteroidsを入れていると、警告や注意がとてもうれしいのですが、似たような解析機能を無償で提供してくれます。
利用方法
例えば、次のコードがあります。
$input = "(,)()(:)(!)"; $pattern = "\((?<val>[\,\!\;\:])\)"; $r = New-Object System.Text.RegularExpressions.Regex $pattern $result = $r.Replace($input, {param($m) if ($m.Groups["val"].Value -eq ";") { return "[1]" } else { return "[0]" } }) Write-Host $result function hoge { 1 } $taskFactory = [System.Threading.Tasks.Task]::Factory $t = $taskFactory.StartNew({ return hoge }) $t $n = 10 $data = [Linq.Enumerable]::RangeƐ, $n) $sum = 0; [System.Threading.Tasks.Parallel]::ForEach($data, [System.Action]{ $sum += $x; }) [Console]::WriteLine($sum)
これを、Script Analyzerで Scan Scriptすると。

こんな感じで、警告が!

Lineが出てくれるので、その警告の位置でダブルクリックすれば該当コード行を指します。
例えば、 19行目の Function Name Not Following Verb-Nown Form だとこうです。

いいですね。
あまり過信できない
これはおかしい。事前に変数宣言するのはない。判断基準が知りたいですね。
$TotalstopwatchSession = [System.Diagnostics.Stopwatch]::StartNew()
Variable $TotalstopwatchSession not declared prior to assignment
まとめ
いい感じですね!「ようやく」という感じと、「これから良くなりそう」という期待があります。
ただScript Analyzerは、リアルタイムに検出しないのが残念です。Scan Script はねぇ。
ISESteroidsと競合しないので、コード解析はISESteroidsと併用かなーとか。
え、別にvalentiaで警告たくさんでたからじゃないもん。
