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

f:id:guitarrapc_tech:20140418060053p:plain

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

Get-Service WSearch

結果です。

C:\Users\acquire> Get-Service WSearch

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

ダウンロード

Microsoft Download Centerからどうぞ。

ダウンロードの簡略化

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

インストール

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

実行

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

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

f:id:guitarrapc_tech:20140418061232p:plain

利用

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

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

注意

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

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

f:id:guitarrapc_tech:20140418064423p:plain

f:id:guitarrapc_tech:20140418064449p:plain

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

f:id:guitarrapc_tech:20140418062207p:plain

検索

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

f:id:guitarrapc_tech:20140418062405p:plain

並び替え

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

f:id:guitarrapc_tech:20140418062503p:plain

設定画面

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

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

f:id:guitarrapc_tech:20140418062603p:plain

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

f:id:guitarrapc_tech:20140418062646p:plain

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

f:id:guitarrapc_tech:20140418062745p:plain

詳細ビュー

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

f:id:guitarrapc_tech:20140418062953p:plain

  • Preview

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

f:id:guitarrapc_tech:20140418063040p:plain

  • Download

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

f:id:guitarrapc_tech:20140418063113p:plain

  • Description

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

f:id:guitarrapc_tech:20140418063334p:plain

他にも

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

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すると。

f:id:guitarrapc_tech:20140418063907p:plain

こんな感じで、警告が!

f:id:guitarrapc_tech:20140418063952p:plain

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

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

f:id:guitarrapc_tech:20140418064057p:plain

いいですね。

あまり過信できない

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

$TotalstopwatchSession = [System.Diagnostics.Stopwatch]::StartNew()
Variable $TotalstopwatchSession not declared prior to assignment

まとめ

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

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

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

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

f:id:guitarrapc_tech:20140418065022p:plain

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

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

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