私以外の人にとっても待望であったであろう、 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からどうぞ。
ダウンロードの簡略化
マイクロソフトのライセンスの同意したということであれば、さくっとダウンロードしてインストール起動まで行うスクリプトをどうぞ。
インストール
- ダウンロードした 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 で警告たくさんでたからじゃないもん。