web-dev-qa-db-ja.com

ウィンドウを表示せずにPowerShellスクリプトをバックグラウンドタスクとして実行するにはどうすればよいですか?

私は、パフォーマンスカウンターを起動して.csvファイルに格納するスクリプトの作成に取り組んでおり、ファイルが大きくなりすぎるとロールオーバーします。 PowerShellプロンプトまたはISE(v.2/winサーバー2008を実行しています)からスクリプトを実行すると問題なく動作し、ファイルは正しく実行されています。

ただし、次のcmdプロンプト行を使用してコマンドを実行しようとすると(cmdで/ kスイッチを使用しても)、コマンドプロンプトがすぐに閉じて、ファイルが実行されません。

powershell.exe -windowstyle hidden {iis_test.ps1}

私も次のことを試しましたが、Powershellが停止しない(タスクマネージャーを介して監視し、Powershell.exeが表示されるのを探している)のに、ファイルが作成されるのがわかりません。

powershell.exe -noexit -windowstyle hidden {iis_test.ps1}

エラーが発生する可能性のある場所(イベントビューア、コマンドプロンプトウィンドウ自体)でエラーが発生していることもわかりません。

何か案は?結局のところ、私の目標は、vb winformsがこれらのスクリプトファイルを呼び出すようにすることです。当然、コマンドプロンプトコマンドを理解することが役立つと思いました。 このスクリプトは移植可能で、すべてのWindows 2008 Serverシステムで実行することが非常に重要です(そのため、追加のインストールが必要なサードパーティのエンティティから離れる必要があります)。

編集:実行するファイルを指定するには、-file引数を使用する必要がありました。

15
Sean Long

dOS/CMDシェルからこれを試してください:

powershell.exe -windowstyle hidden -file C:\iis_test.ps1
23
CB.
Powershell.exe -windowstyle hidden -file C:\iis_test.ps1

ただし、このコマンドを実行すると、CMDウィンドウが表示されます。
ただし、代わりにVBscriptを使用できます

Set objShell = CreateObject("WScript.Shell")
objShell.Run "CMD /C START /B " & objShell.ExpandEnvironmentStrings("%SystemRoot%") & "\System32\WindowsPowerShell\v1.0\powershell.exe -file " & "YourScript.ps1", 0, False
Set objShell = Nothing
6
user2914236