1
3

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 1 year has passed since last update.

【PowerShell】外部プログラムを実行する方法

Posted at

はじめに

職場で見たPowerShellのスクリプトで、外部プログラム(.exeや.ps1など)を実行する方法が幾つかあることを知ったので、今回はそれを記事としてまとめてみました。

プログラムを実行する方法

パスが通っている場合

  • パスが通っている場合は、以下のようにプログラム名を直接入力するだけで実行できます。
    • コマンドプロンプトでお馴染みの書き方です。
    • 拡張子が無くても実行できますが、何となく拡張子も入力した方がしっくりする気がします。(※個人の感想です)
パスが通っている場合
> calc

パスが通っていない場合

  • パスが通っていない場合は、絶対パスもしくは相対パスでプログラムを実行します。
    • これもコマンドプロンプトでお馴染みの書き方です。
    • ここまでは当たり前レベルの話となりますが...
パスが通っていない場合
> C:\test\hoge.ps1

パス中に空白が存在する場合:「&」の利用

  • パス中に空白が存在する場合、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されませんというエラーメッセージが出てしまいます。
パス中に空白が存在する場合に生じるエラー
PS C:\Users\NKOJIMA> C:\Program Files (x86)\sakura\sakura.exe
x86 : 用語 'x86' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。
名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください

発生場所 :1 文字:19
+ C:\Program Files (x86)\sakura\sakura.exe
+                   ~~~
    + CategoryInfo          : ObjectNotFound: (x86:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
  • パス中に空白が存在する場合は、以下のようにパスの前に&を入れることで空白があってもプログラムを実行できるようになります。
    • この書き方はPowerShellに慣れていない人には分かりづらいかもしれません。
パス中に空白が存在する場合
PS C:\Users\NKOJIMA> & "C:\Program Files (x86)\sakura\sakura.exe"

パス中に空白が存在する場合:Start-Processの利用

  • 以下のようにStart-Processコマンドレットを利用することでも、「パス中に空白が存在する場合の問題」を回避した上で外部プログラムを実行できます。
    • パスの前に&を入れるよりも、Start-Processを使った方が分かりやすい書き方だと感じました。
Start-Processコマンドレットの利用
PS C:\Users\NKOJIMA> Start-Process "C:\Program Files (x86)\sakura\sakura.exe"

参考URL

1
3
0

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
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?