2016-06-13 22 views
1

PowerShellで以下のコマンドを実行する方法。以下のコマンドは、パスワードの入力を要求し、ユーザーはパスワードを入力する必要があります。私はそれを自動化したい。Powershellのオプションでexeファイルを実行する

mxexport [ -f <zip file name> ] 

私は、ファイルにパスワードを保存しようと、PowerShellで以下のスクリプトを実行します。

$password = get-content C:\cred.txt | convertto-securestring 
$pass=[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($password)) 
& 'C:\Program Files\XX\XX\bin\mxexport.exe' -f file.zip, -p $pass 

をしかし、私は以下のエラーを取得しています:

mxexport.exe' 
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (Error while getting password from User.:String) [], RemoteException 
    + FullyQualifiedErrorId : NativeCommandError 
+0

あなたは '$ password'と' $ pass'に意味のある値を得ますか?正しい値で 'mxexport'を呼び出していますか? '$ pass'にハードコードされた値を持つ' mxexport'を呼び出そうとしましたか? –

+0

私が知ったところでは、mxexportは-f filenameというオプションを1つだけ受け付けます。しかし、コマンドmxexport.exe -f filenameを実行した後にEnterキーを押すと、パスワードの入力を求めるプロンプトが表示されます。ファイルからパスワードを取得し、入力するためのパスワードを要求せずにコマンドを実行する方法。 –

答えて

2

あなたは、単一引用符を使用しています、したがって、$pass変数は解決されません。また、単に使用し、引用符で引数をラップする必要はありません。

& "C:\Program Files\XX\XX\bin\mxexport.exe" -p $pass 

編集あなたのコメントに

をスプラッティングを使用してパラメータを渡すようにしてください:

$arguments = @("-f file.zip", "-p $pass") 
& "C:\Program Files\XX\XX\bin\mxexport.exe" @arguments 
+0

申し訳ありませんが悪いです。 mxexportには1つのオプションしかありません。ファイル名。しかし、それはパスワードを求めています。以下は、私が得ているエラーです。 CategoryInfo:NotSpecified:(User.:Stringからパスワードを取得中にエラーが発生しました) ' –

+1

私の編集した回答を参照してください。 –

+0

混乱して申し訳ありません。私はちょうど私の質問を編集しました。 mxexport.exeにはfilenameを受け入れるオプションが1つしかありません。パスワードを別のパラメータとして指定すると、受け入れられません。しかし、私たちがmxexport.exeの後にenterを押すたびに、パスワードの入力を求めるプロンプトが表示されます。だから私は自分のスクリプトの代わりにユーザーの入力ファイルからパスワードを取得する必要があります。 –