437
467

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Powershellを楽に実行してもらうには

Posted at

#PowerShellで何かつくったよ!
##実行できない(´・ω・`)

せっかくPowershellでつくったのに、いざみんなに使ってもらおうと思ったら実行できない/実行方法を説明するのも大変…といったことはありませんか?

私はありました。

~みんなの声~
「ダブルクリックしたらソースが表示されたんだけど…」せやねん
「実行したら赤字でエラー出てきた 失敗?」ちゃうねん
「なんでbatじゃないの」PS好きやねん

かなしい。

##実行ポリシーあるからね
Powershellはデフォルトの設定ではどうあがいてもスクリプトを実行できないようになっています(下記表のRestricted)。
batみたいに「あ、実行したくないのにうっかりダブルクリックしちゃった!」を防ぐには大変有効な設定なのですが、同時に煩わしい点でもあります。

この設定のことは実行ポリシー(セキュリティポリシー)といって、以下の4つがあります。

引数 ローカル リモート
Restricted × ×
AllSigned 署名付きのみ〇 署名付きのみ〇
RemoteSigned 署名付きのみ〇
Unrestricted

※リモート:インターネットからDLしてきたps1、または別サーバ上のps1
※署名付きの話は割愛します

今の実行ポリシーを確認するときは以下、
Get-ExecutionPolicy

実行ポリシーを変更するときは上記表の引数を指定して実行します。
(※レジストリを変更するので管理者権限でPowershellを実行してください)
Set-ExecutionPolicy 引数

自分のローカルにあるps1を実行するには、RemoteSignedで十分です(`・ω・´)

というわけで、上記を踏まえたうえで(なるべく)楽にPowershellを実行してもらうにはどうしたらいいのかをまとめました。

#コマンドラインから実行してもらう
コマンドラインから実行してもらう場合のお話。
ただ、普段から使っているならそもそも実行でつまづかないかも…

##powershell編

配布ファイル:「hogehoge.ps1」

  1. Powershellを管理者権限で起動します
  2. ps1配置場所に移動します(Set-Location)
  3. 実行ポリシーを変更します
    Set-ExecutionPolicy RemoteSigned⇒yes
  4. 実行します
    .\hogehoge.ps1
  5. 実行ポリシーを戻します
    Set-ExecutionPolicy Restricted ⇒yes

※ 4.でhogehoge.ps1の絶対パスを指定する場合、2.は不要です。

##コマンドプロンプト編
配布ファイル:「hogehoge.ps1」

  1. コマンドプロンプトを起動します(cmd)
  2. ps1配置場所に移動します(cd)
  3. 実行します
    powershell -NoProfile -ExecutionPolicy Unrestricted .\hogehoge.ps1

※ 3.でhogehoge.ps1の絶対パスを指定する場合、2.は不要です。
※ 3.は一時的に実行ポリシーを変更しているだけなので、元に戻す操作は不要です。

#ダブルクリックで実行してもらう
「やっぱりbatみたいにダブルクリックで実行したい><!」という場合のお話。
別ファイルを作ることになりますが、実行ステップは(ちょっと)少なくできます。

##ショートカット作成編
配布ファイル:「hogehoge.ps1」

  1. ps1のショートカットを作成します
  2. ショートカットの右クリックプロパティ>リンク先の前に以下を追加します
    powershell -ExecutionPolicy RemoteSigned -File
  3. ショートカットをダブルクリックして実行します

##bat作成編
あらかじめ、実行用のbatを作成します。
※powershellから始まる行以外は特になくても構いません。

run.bat
@echo off
echo 〇〇〇をしています…
powershell -NoProfile -ExecutionPolicy Unrestricted .\hogehoge.ps1
echo 完了しました!
pause > nul
exit

配布ファイル:「hogehoge.ps1」「run.bat」

  1. batとps1を同ディレクトリに配置します
  2. batをダブルクリックして実行します

#おわり

これでもう怖くない。゚+.*(+・`ω・)9 !!

437
467
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
437
467

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?