PowerShellスクリプトを実行する方法


711

PowerShellスクリプトを実行するにはどうすればよいですか?

  • myscript.ps1という名前のスクリプトがあります
  • 必要なフレームワークをすべてインストールしました
  • 私は、その設定された実行ポリシーの事を
  • 私はこのMSDNヘルプページの指示に従って、次の ように実行しようとしています:( powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1'ありまたはなし--noexit

これは、ファイル名が出力されることを除いて、まったく何も返しません。

エラーなし、メッセージなし、何もありません。ああ、を追加-noexitすると同じことが起こりますが、PowerShell内に留まり、手動で終了する必要があります。

.ps1ファイルはプログラムを実行し、そのプログラムの出力に依存するエラーレベルを返すことになっています。しかし、私はまだそこに到達していないと確信しています。

何が悪いのですか?


2
開始したとおりに開始powershellしますcmd。今、あなたは実行することができますmyscript.ps1(PowerShellのウィンドウで)、つまりそこに任意の実行可能ファイルとしてスクリプトを.\myscript.ps1
parasrish

回答:


732
  1. Windows PowerShellを起動し、PSコマンドプロンプトが表示されるまでしばらく待ちます
  2. スクリプトが存在するディレクトリに移動します

    PS> cd C:\my_path\yada_yada\ (enter)
  3. スクリプトを実行します。

    PS> .\run_import_script.ps1 (enter)

何が欠けていますか?

または:次のcmd.exeようにPowerShellスクリプトを実行できます。

powershell -noexit "& ""C:\my_path\yada_yada\run_import_script.ps1""" (enter)

このブログ投稿によると、ここ

または、C#アプリケーションからPowerShellスクリプトを実行することもできます。

C#アプリケーションからPowerShellスクリプトを非同期に実行する


19
あなたのブログ投稿リンクはそれをしました。私は使用する必要がありますpowershell -noexit "& "C:\yada_yada\run_import_script.ps1"3つの二重引用符に注意してください)理由はよくわかりませんが、現時点ではあまり気にしません:)どうもありがとうございました。
Pekka

16
正確には何を"&しますか?
BlueRaja-Danny Pflughoeft 2012年

16
technet.microsoft.com/en-us/library/ee176949.aspxによると、「&」は「その文字列値を実際に実行したい場合(つまり、パスが囲まれているスクリプトを実行したい場合二重引用符)パスの前にCall演算子(アンパサンド)を付ける必要があります。」
Doug Dawson

29
新しく作成した未署名のスクリプトに対してPowerShellのデフォルトの実行ポリシーをバイパスするまで、これらはどれも機能しませんでした。特に、これには管理者としてPowerShellを再起動する必要がありました。@LukePuplettに完全に同意します。最も単純なユースケースで20分間グーグルして混乱させるのはすばらしいことです。そしてエラーメッセージ!どうやらこれらの人たちはIBMで働いていました... 70年代に。
Spike0xff 2016年

15
以下のコメントで述べられているように、実行ポリシーはバイパスする必要があります。ここで説明されていない項目の1つは、パラメーターを渡してコマンドラインからPowerShellスクリプトを実行する方法です。タイプ:これを行うにはpowershell -executionpolicy bypass ".\myscript.ps1 yadayadayada"
ジム・Lahman

230

PowerShell 2.0を使用している場合は、PowerShell.exeの-Fileパラメーターを使用して、cmd.exeなどの別の環境からスクリプトを呼び出します。例えば:

Powershell.exe -File C:\my_path\yada_yada\run_import_script.ps1

5
そのような呼び出しにパラメーターを追加する方法はありますか?
AlexanderGroß10年

11
スクリプトファイルのパスの後に引数を追跡できるだけです。PowerShell.exeの使用法から-[-File <filePath> <args>]
Keith Hill

"このシステムではスクリプトの実行が無効になっているため、ロードできません。詳細については、「get-help about_signing」を参照してください。"
Pavel Vlasov

7
システムでPowerShellスクリプトの実行を有効にしていない場合は、パラメーターを追加します-ExecutionPolicy Bypass
Keith Hill

4
参考までに、これは私の経験(Windows 2012 Server)のPowerShell 1.0でも機能します
knocte

189

既定のスクリプト実行ポリシーを変更せずにスクリプトを実行する場合は、Windows PowerShellを起動するときにバイパススイッチを使用できます。

powershell [-noexit] -executionpolicy bypass -File <Filename>

11
また、-nologoスタートアップバナーを
削除

73

タイプ:

powershell -executionpolicy bypass -File .\Test.ps1

注:これTest.ps1はPowerShellスクリプトです。


powershell -executionpolicy bypass -File .\Test.ps1現在の作業ディレクトリにTest.ps1が含まれていると想定して、Powershellで実行する必要があります
Yeow_Meng

29

私は同じ問題を抱えていて、試してみました...最後に私は使用しました:

powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"

そして、この行をバッチファイルに入れれば、これは機能します。


22

PowerShell 1.0しかない場合、これで十分にうまくいくようです。

powershell -command - < c:\mypath\myscript.ps1

スクリプトファイルをPowerShellコマンドラインにパイプ処理します。


3
セキュリティポリシーでスクリプトの実行が許可されていない場合に役立つトリック。
Aron Lorincz

17

とても簡単。Windowsで.ps1ファイルを右クリックし、シェルメニューで[ PowerShell実行 ]をクリックします


これは、実行ポリシーでスクリプトの実行を有効にする必要なく、スクリプトをすばやく実行するために機能します。ありがとう!
b01

これは私が探していたものです、ありがとう!
Aamol 2018年

11

コマンド(BAT)ファイルの使用:

@echo off
color 1F
echo.

C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "PrepareEnvironment.ps1"

:EOF
echo Waiting seconds
timeout /t 10 /nobreak > NUL

管理者として実行する必要がある場合:

  1. コマンドプロンプトを指すショートカットを作成します(管理コマンドプロンプトと名付けました)。
  2. ショートカットのプロパティを開き、互換性タブに移動します
  3. [権限レベル]セクションで、[このプログラムを管理者として実行する]の横のチェックボックスがオンになっていることを確認します


10

スクリプトに.ps1拡張子が付いた名前が付けられていて、PowerShellウィンドウが表示されている場合は、実行するだけです./myscript.ps1(ファイルが作業ディレクトリにあると想定)。

とにかく、PowerShellバージョン5.1を搭載したWindows 10でこれは私に当てはまり、それを可能にするために何もしたことがないと思います。


2
これはどのように質問に答えますか?
Peter Mortensen 2017年

4
それは質問に完全に答えます:powershellスクリプトをどのように実行しますか?回答:PowerShellコンソールを起動して、スクリプトを実行します。簡単です。シンプル。Linuxでも動作します。
Thufir 2018

4
これは間違いなく質問に答え、まさに私が探していたものでした。myscript.ps1エラー投げたが、と仕事、しませんでした./、それが実行されます。
ジェフ

7
  • スクリプトのパス、つまりcmdによるパス設定を指定します。

    $> . c:\program file\prog.ps1

  • PowerShellのエントリポイント関数を実行します。

    例えば、 $> add or entry_func or main


コマンドプロンプトからコマンドを実行する:>$ . c:\program file\prog.ps1 '.' is not recognized as an internal or external command, operable program or batch file.および>$ add or entry_func or main 'add' is not recognized as an internal or external command, operable program or batch file.
Suncat2000


1

-Fileファイル名の前にパラメータを使用します。引用符により、PowerShellは一連のコマンドであると見なします。


1

私はうまくいく非常に簡単な答えを持っています:

  1. 管理者モードでPowerShellを開く
  2. 実行: set-executionpolicy unrestricted
  3. 通常のPowerShellウィンドウを開き、スクリプトを実行します。

エラーメッセージの一部として示されているリンクをたどってこの解決策を見つけました: 実行ポリシーについて

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.