Category Archives: Power Shell

[Power Shell] Power Shellでスクリプトファイルを実行できるようにする

Power Shellのスクリプトをファイルにして実行することができます。拡張子は.ps1になります。
test.ps1というファイルに下記のように一行スクリプトを書いてみます。

Get-ChildItem c:\

これをPower Shellのコンソールで実行してみます。するとこのようなエラーが出ます。

.\test.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル D:\Work\test.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(http://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ .\test.ps1
+ ~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess

これは、セキュリティー上の対策で容易にスクリプトファイルの実行をできないようにしているためです。ここでスクリプトを実行できるようにします。(リスクはありますので、それぞれの状況により設定はご判断ください。)

Get-ExecutionPolicy

Restrictedと表示されるはずです。(設定により違うケースもありますが。)これはすべてのスクリプトの実行を禁止している状態です。これを「ローカルに保存しているファイルは実行可能で、インターネットからダウンロードしたものは署名のあるもののみ実行許可」にします。まずは、PowerShellのコンソールは(管理者)で起動してください。

Set-ExecutionPolicy RemoteSigned

下記のように表示されますので

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (http://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は “Y”):

ここでYを押してEnterキーを押します。

PowerShellコンソールで下記のように実行します。
.\test.ps1

無事下記のように実行できました。
PS D:\Work> .\test.ps1

ディレクトリ: C:\
Mode LastWriteTime Length Name
—- ————- —— —-
d—- 2013/11/03 21:19 history
d—- 2013/09/11 0:04 inetpub
d—- 2012/11/07 0:59 mnt
d—- 2013/03/10 0:43 NVIDIA
d—- 2013/07/31 23:28 NvidiaLogging
d—- 2013/08/23 0:22 PerfLogs
d-r– 2013/11/06 23:07 Program Files
d-r– 2013/11/17 17:13 Program Files (x86)
d-r– 2013/11/21 0:05 Users
d—- 2013/11/17 15:26 Windows