tech.guitarrapc.cóm

Technical updates

Script Browser for Windows PowerShell ISE が公開されました

私以外の人にとっても待望であったであろう、 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

image

Cmdletで探すならこうですね。

Get-Service WSearch

結果です。

C:\Users\acquire> Get-Service WSearch

Status   Name               DisplayName
------   ----               -----------
Running  WSearch            Windows Search

ダウンロード

Microsoft Download Centerからどうぞ。

ダウンロードの簡略化

Microsoftのライセンスの同意したということであれば、さくっとダウンロードしてインストール起動まで行うスクリプトをどうぞ。

Install-PowerShellScriptBrowzerForISE

インストール

  1. ダウンロードしたmsiを管理者で実行して、インストールしてください。*2
  2. 外部モジュールでアドオンとなるので、インストールの前/後どちらでもいいので、ExecutionPolicyをRemoteSignedやByPass *3
Set-ExecutionPolicy RemoteSigned

実行

PowerShell ISEの起動時に自動読み込まれます。

これまで右側にはCommandペインしかなかったのに、Script AnalyzerとScript Browserが加わっているのがわかります。

image

利用

詳しい英語の説明はこちらにあります。

細かく見ていきましょう。

注意

このScript Browser for Windows PowerShell ISEですが、設定言語(Set-Calcure)によっては、読み込みできません。

その判別は、Languageにある言語かどうかです。日本語は大丈夫ですが、Sweden (スエーデン) のsv-SEではエラーが出たりします。

image

image

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スクリプトギャラリーにいちいち行ってダウンロードするまでもなく、ここで閲覧、ダウンロードが可能です。

image

検索

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

image

並び替え

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

image

設定画面

英語だけ? ではありません。

右にある歯車アイコンから設定画面にいけます。

image

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

image

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

image

詳細ビュー

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

image

  • Preview

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

image

  • Download

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

image

  • Description

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

image

他にも

他にも、お気にいりに入れたりできたり。一度使ってください。ぜひ。

Script Analyzer

Script Browser for Windows PowerShell ISEのインストールで一緒に入るのが、 PowerShellスクリプトの解析をしてくれる Script Analyzer です。

ISESteroidsを入れていると、警告や注意がとてもうれしいのですが、似たような解析機能を無償で提供してくれます。

利用方法

例えば、次のコードがあります。

$input = "&#40,&#41(&#41&#40:&#41&#40!&#41";
$pattern = "\&#40&#40?<val>[\,\!\;\:]&#41\&#41";
$r = New-Object System.Text.RegularExpressions.Regex $pattern
$result = $r.Replace&#40$input, {param&#40$m&#41; if &#40$m.Groups["val"].Value -eq ";"&#41
{
    return "[1]"
}
else
{
    return "[0]"
}
}&#41
Write-Host $result


function hoge
{
    1
}

$taskFactory = [System.Threading.Tasks.Task]::Factory
$t = $taskFactory.StartNew&#40{
return hoge
}&#41
$t


$n = 10
$data = [Linq.Enumerable]::Range&#400, $n&#41;
$sum = 0;
[System.Threading.Tasks.Parallel]::ForEach&#40$data, [System.Action]{
    $sum += $x;
}&#41
[Console]::WriteLine&#40$sum&#41;

これを、Script Analyzerで Scan Scriptすると。

image

こんな感じで、警告が!

image

Lineが出てくれるので、その警告の位置でダブルクリックすれば該当コード行を指します。

例えば、 19行目の Function Name Not Following Verb-Nown Form だとこうです。

image

いいですね。

あまり過信できない

これはおかしい。事前に変数宣言するのはない。判断基準が知りたいですね。

$TotalstopwatchSession = [System.Diagnostics.Stopwatch]::StartNew&#40&#41
Variable $TotalstopwatchSession not declared prior to assignment

まとめ

いい感じですね!「ようやく」という感じと、「これから良くなりそう」という期待があります。

ただScript Analyzerは、リアルタイムに検出しないのが残念です。Scan Script はねぇ。

ISESteroidsと競合しないので、コード解析はISESteroidsと併用かなーとか。

え、別にvalentiaで警告たくさんでたからじゃないもん。

image

*1:私の手元で Update 1まで確認しています

*2:パスはご自由にどうぞ

*3:通常はRemoteSignedが適格かと