Cmdコマンドライン内でPowerShellスクリプトを実行しようとしています。誰かが私に例を挙げて、それはうまくいきました:
powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"
しかし問題は、PowerShellスクリプトに入力パラメーターがあるため、試してみましたが、機能しません。
powershell.exe -noexit "& 'D:\Work\SQLExecutor.ps1 -gettedServerName "MY-PC" ' "
エラーは次のとおりです。
「D:\ Work\SQLExecutor.ps1 -gettedServerName "MY-PC"」という用語は、コマンドレット、関数、
この問題を修正するにはどうすればよいですか?
引数をファイルパスから分離する必要があります。
powershell.exe -noexit "& 'D:\Work\SQLExecutor.ps1 ' -gettedServerName 'MY-PC'"
Fileパラメーターと位置パラメーターを使用して構文を簡単にする別のオプション:
powershell.exe -noexit -file "D:\Work\SQLExecutor.ps1" "MY-PC"
Shay Levyの正解に以下を追加したいと思います。PowerShellスクリプトを起動するための小さなバッチスクリプトrun.cmd
を作成すると、生活が楽になります。
@echo off & setlocal
set batchPath=%~dp0
powershell.exe -noexit -file "%batchPath%SQLExecutor.ps1" "MY-PC"
SQLExecutor.ps1
と同じパスに配置し、今後はrun.cmd
をダブルクリックするだけで実行できます。
注:
Run.cmdバッチ内でコマンドライン引数が必要な場合は、単にそれらを%1
... %9
として渡します(または%*
を使用してすべてのパラメーターを渡します)。powershell.exe -noexit -file "%batchPath%SQLExecutor.ps1" %*
変数batchPath
には、バッチファイル自体の実行パスが含まれます(これは式%~dp0
が使用されるものです)。そのため、Powershellスクリプトを呼び出し元のバッチファイルと同じパスに配置するだけです。
ちょうど試してください:
powershell.exe -noexit D:\Work\SQLExecutor.ps1 -gettedServerName "MY-PC"