プロジェクト

全般

プロフィール

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


約8年前に更新