Help us understand the problem. What is going on with this article?

管理者権限なしでPowerShellスクリプトを実行する方法

More than 5 years have passed since last update.

PowerShellのスクリプトはデフォルトでは実行できないようになっています。
スクリプトを実行するためにはGet-ExecutionPolicyコマンドレットで実行ポリシーをRestricted以外に変更する必要があります。

PowerShell
Set-ExecutionPolicy RemoteSigned

ところが、上のようにコマンドを実行するとエラーとなり、PowerShellを管理者として実行するように指示が表示されます。
でも大丈夫。管理者権限がなくてもスクリプトを実行できる方法があります。


実行ポリシーについては下の記事に詳しく説明されています。
Tech TIPS:WindowsでPowerShellスクリプトの実行セキュリティポリシーを変更する - @IT

方法1: スコープを指定してExecutionPolicyを変更する

スコープを実行中のプロセスに絞れば実行ポリシーを変更できます。

PowerShell
Set-ExecutionPolicy RemoteSigned -Scope Process

方法2: PowerShellの起動オプションとして実行ポリシーを指定する

PowerShellの起動時に起動オプションで実行ポリシーを指定することもできます。

コマンドプロンプト
powershell -ExecutionPolicy RemoteSigned

ファイル名を指定すれば直接スクリプトを実行することもできます。

⚪︎
powershell -ExecutionPolicy RemoteSigned -File script.ps1

もちろん、上のコマンドをバッチファイルに書いておけばバッチファイルをダブルクリックするだけで実行できます。

ただし、順序を入れ替えるとダメみたいです。謎ですね。

×
powershell -File script.ps1 -ExecutionPolicy RemoteSigned

方法3: ファイルの内容を一度文字列として読み込んでから実行する

最後に、スクリプトの内容をまるごと文字列として読み込んで実行する方法もあります。

Get-Contentはファイルの内容を各行を1つの文字列とする配列として読み込むので、改行を入れて結合してからInvoke-Expressionで実行します。

PowerShell_2.0
(Get-Content [ファイル名]) -join "`n" | Invoke-Expression

PowerShell 3.0にはファイルの内容をまるごと1つの文字列として読み込む-Rawパラメータがあります。

PowerShell_3.0
Get-Content [ファイル名] -Raw | Invoke-Expression

こうしてみると、案外抜け穴がいろいろありますね。
PowerShellの実行ポリシーというのはスクリプトを実行できなくするためのものではなくて、不用意にスクリプトを実行してしまわないようにしている程度のものだということがわかります。

alchemist
CAEの技術サポートとコンサルティングの仕事をしています。 おもにNXの構造解析と機構解析を担当しています。 最近はCAD/CAEのカスタマイズの仕事を始めました。 仕事ではC#とPythonを使っています。
http://ritsuan.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした