PowerShell あれこれ
ExecutionPolicy の設定
Windows PowerShell の機能
以前、 Power Shell の既定の実行設定がデジタル署名入りじゃないと実行できないようになってるので
Set-ExecutionPolicy の 設定が必要だって話をしたと思います
Restricted - 実行できるスクリプトはありません。Windows PowerShell は対話型モードでのみ使用できます。
AllSigned - 信頼できる発行元が署名したスクリプトのみを実行できます。 RemoteSigned - ダウンロードしたスクリプトは信頼できる発行元が署名した場合にのみ実行できます。 Unrestricted - 制限なし。すべての Windows PowerShell スクリプトを実行できます。 |
これ、実は 面倒な場合、インストール時にレジストリで設定することが可能です。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell] "ExecutionPolicy"="RemoteSigned" |
これで、再インストールのたびに設定しなくてよくなったらしい・ω・
$PsScriptRoot が使えない謎
ps1ファイルを実行中のパスを取得する $PsScriptRoot という便利な変数があるらしいという情報が入ったので早速使ってみようと思ったのですが…
あれ?ないよ?
$PsScriptRoot only works with Modules | Microsoft Connect
Add auto-variables $PSScriptRoot and $PSScriptPath for running scripts | Microsoft Connect
結論: v2.0 はバグでちゃんと機能しないので、$MyInvocation を使え
・ω・ なんだよー!
Comments