PowerShellプログラミング¶
PowerShellスクリプトあれこれ¶
スクリプトファイルの実行権限¶
Windows OS(一部のServer OSを除く)のデフォルトでは、Powershellスクリプトファイルを実行しようとするとセキュリティ・エラーとなります。
.\myscript.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\torutk\work\myscript.ps1 を 読み込むことができません。詳細については、「about_Execution_Policies」(http://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。 発生場所 行:1 文字:1 + .\myscript.ps1 + ~~~~~~~~~~~~~ + CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
これは、セキュリティポリシーがRestrictedに設定されているためです。RemoteSigned(ローカルのファイルは実行可能、インターネットから入手したファイルは署名があれば実行可能)かUnrestrictedにしておきます。
PS C:\> Get-ExecutionPolicy Restricted PS C:\> Set-ExecutionPolicy Unrestricted 実行ポリシーの変更 実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies のヘルプ トピック (http://go.microsoft.com/fwlink/?LinkID=135170) で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか? [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): Y PS C:\> Get-ExecutionPolicy Unrestricted PS C:\>
セキュリティポリシー¶
コマンドライン引数¶
Args配列でコマンドライン引数を受け取ります。第1引数が$Args0、第2引数が$Args1となります。
echo $Args[0]
スクリプトの実行結果¶
スクリプト内でreturnするときに指定した値が実行結果となります。
returnがない場合、最後の評価値が実行結果となります。
関数を定義したスクリプトファイルを読み込み¶
PS> . .\myfunc.ps1
ファイルの絶対パス¶
Resolve-Pathを使います。実在しないファイルを指定するとエラーになります。
PS> Resolve-Path .\myfunc.ps1 Path ---- C:\Users\torutk\work\myfunc.ps1