2017-11-29 17 views
0

以下は、パラメータを使用してバッチファイルを呼び出すパワーシェルスクリプトの行です。位置パラメータエラーが発生します。コマンドプロンプトからパラメータを使用してバッチファイルを呼び出す方法

誰かがpowershellスクリプトのパラメータを使ってバッチファイルを呼び出す方法と、バッチファイルからその入力パラメータを取得する方法を教えてください。

スタート・プロセス "のcmd.exe" "/ C D:\ load.bat" "$パスワード"

--Error: 
**PS D:\Oracle\Scripts\Obi> .\XYZ.ps1 
Start-Process : **A positional parameter cannot be found that accepts argument 'password'.** 
At D:\.ps1:4 char:1 
+ Start-Process "cmd.exe" "/c D:\load.bat" "$Password" 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (:) [Start-Process], ParameterBindingException 
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.StartProcessCommand** 

スクリプト私のパワーのシェルスクリプトのおかげで

はラインPowerShellのからバッチファイル(cmd.exeシェルスクリプト)を実行するには

set "Var=%1" 
for %%i in (*.csv) do (
    sqlldr USERID=userid/%Var%@server:prot/domain, CONTROL=control.ctl, LOG=logfile.log,ERRORS=9999 data='%%i' direct='true' 
    move %%i D:\backup 
) 
+1

のように(Redirectionを参照)$password変数cmd有毒文字が含まれていないことを前提に実行するのでしょうか? PowerShellから直接必要なコマンドを実行するだけです。 –

+0

バッチが必要なのは、一連のSQLプロシージャとファンクションがトリガーされるためです。すべてをPSに変換するのは巨大な作業です。私のPSからバッチを呼び出す方法はありますか? –

+1

**実行可能ファイルとしてバッチファイルを実行** ** – DeveloperTK

答えて

1

:バッチファイル(load.bat)でプロンプトが表示されたら、バッチファイルの名前とそのパラメータを入力してEnterを押してください。覚えておいてください:PowerShellはシェルなので、入力するコマンドはcmd.exeと同じです。たとえば:

D:\load.bat [param1 [param2 [...]] 

一つcmd.exeとの違いは、実行するコマンドにスペースが含まれている場合は、引用符でコマンドを囲み、&(コールまたは呼び出し)オペレータでそれを呼び出すことです。例:パラメータにスペースが含まれている場合だけcmd.exeのように

& "D:\Script Tools\load.bat" [param1 [param2 [...]] 

は、それを引用することを忘れないでください。

0

あなたは実行することができます。しかし、あなたも実行することができます

cmd.exe /c D:\load.bat "$Password" 

Start-Process -FilePath 'C:\Windows\System32\cmd.exe' -ArgumentList '/c', 'D:\load.bat', "$Password" 

/c'D:\load.bat'であることを

D:\load.bat "$Password" 

かを別々の議論を考慮した。

Start-Processは、ウィンドウを非表示にする(-WindowStyle Hidden)か、スクリプトが完了するまでPowerShellが待機するようにしたい場合に便利です(-Wait)。バッチファイルから返される値が必要な場合は、-PassThruパラメータが必要な場合があります。

0

疑問がある場合は、Start-Process documentationを読んで従ってください。

start-process cmd.exe -ArgumentList "/c", "D:\load.bat", "$password" 

バッチファイルを必要としないのはなぜ上記は

& Ampersand 
< Less-Than Sign 
> Greater-Than Sign 
| Vertical Line 
関連する問題