プログラムファイル内のexeファイルで、発現が起動します
-
20-09-2019 - |
質問
私は、次のコマンドを使用して、フォルダを圧縮する7 - 郵便番号を呼び出すためにPowerShellコマンドを実行しようとしています:
$command = $SevenZip + " a " + $targetDirForZip + $GetDateName + "_" + $dir.Name + ".7z " + $dir.FullName
Invoke-Expression $command
$コマンドに供給された変数がすでに設定され、$ SevenZipがあるさ "C:\プログラムファイル\ 7-ジップの\ 7z.exe"
これは動作していないと私はPowerShellのから7 - 郵便番号を呼び出すための最良の方法をうまくしようとしています。アイデア?
解決
私は前に同じ問題を抱えていました。
:これはまっすぐに私が現在使用してバックアップスクリプトから(ほぼ)コードであります[string]$pathToZipExe = "C:\Program Files\7-zip\7z.exe";
[Array]$arguments = "a", "-tgzip", $outputFilePath, $inputFilePath;
& $pathToZipExe $arguments;
私は呼び出し演算子を引数配列を使用しての習慣を身に得ている、他の方法よりも堅牢であるように思わます。
他のヒント
は、コマンドの実行に名前の文字列を呼び出すためだけの呼び出し(コール)オペレーター&
を使用して起動式を使用する必要はありません。あなたはパラメータが、この場合にSevenZipがちょうど例えばEXEへのパスである必要があり、すなわち、文字列を区切る維持したいことに注意してください。
&$SevenZip a "$targetDirForZip$GetDateName_$($dir.Name).7z" $dir.FullName
あなたが実際に起動式を必要としません。
:あなたは、単になどのアンパサンドを使用して、コマンドを呼び出すことができます&$Command
しかし、あなたが何をしようとしてに適しかもしれないスタート-Processコマンドレットもあります。 $ SevenZipにスペースが含まれており、引用されていない場合は、上記の文字列としてコマンドを実行することで、あなたは、エラーを起こしやすいです。代わりに私が使用することになります:
Start-Process $SevenZip "...rest..."
私は、私の解決策だったここでは、同様にこの問題に遭遇します。
invoke-expression "& 'C:\Program Files\CIESetupClient\Staging\ffd4bc34-52c1-43e7-92d4-93d2f59d7f52\vstor_redist.exe' /q /norestart /log c:\Logs\VSTOR_Redist.log "
私は私のexeファイルを指している単一引用符の外に私のPARAMATERSを残すことができました、私はこれはおそらく起動式を使用してパラメータを指定してexeファイルを呼び出すための最も簡単な方法だと思います。
私は推測してみましょう、起動しようとしている "C:\プログラム"?
PSの正しい構文のわからない、しかし、あなたはそのスペースについて何かを行う必要があります。
私にとっては作品ます:
$command = "& ""$SevenZip""" + " a " + $targetDirForZip + $GetDateName + "_" + $dir.Name + ".7z " + $dir.FullName
Write-Host "Running: $command"
Invoke-Expression $command
また、MS-DOSは、Windows PowerShellスクリプト内からコマンドを使用することができます。
私はいつもあなたが並行してコマンドを起動することができますCMD.EXEのSTARTコマンドを、愛してきました。
ですから、7-ZIPを開始するには、あなたのPowerShellスクリプトで次のコマンドを入れます:
cmd.exe /c start <your 7-zip command like in MS-DOS>