私のスクリプトは、すべての問題のない外部コマンド実行します:構文
$Target= "X:\Backup 2017-12-27.7z"
Write-Host "Compressing as $Target..."
& "C:\Program Files\7-Zip\7z.exe" a "$Target" @C:\Webs\Scripts\include.txt -w
をしかし、私はさらにスイッチを追加するとき、それは完全に壊れる:
$Target= "X:\Backup 2017-12-27.7z"
Write-Host "Compressing as $Target..."
& "C:\Program Files\7-Zip\7z.exe" a "$Target" -spf [email protected]:\Webs\Scripts\include.txt [email protected]:\Webs\Scripts\exclude.txt -w
7z.exe : ERROR: X:\Backup 2017-12-27.7z At C:\Webs\Scripts\backup.ps1:50 char:1 + & "C:\Program Files\7-Zip\7z.exe" a "$Target" -spf [email protected]:\Webs\Scripts\include.t ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (ERROR: X:\Backup 2017-12-27.7z:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError X:\Backup 2017-12-27.7z Open ERROR: Can not open the file as [7z] archive ERRORS: Headers Error System ERROR: Incorrect function.
コマンドはcmd
から正常に実行されます。 PowerShellの構文は何ですか?どのように修正するのですか?
'EchoArgs'はコマンドをうまく解析します。野生の推測として、スペースの代わりにアンダースコアを使用するとどうなりますか? '$ Target =" X:\ Backup_2017-12-27.7z "'? – vonPryz
同様の問題があることを覚えているようですが、各パラメータを文字列として扱うことで修正しました。 '&$ command $ p1 $ p2 $ p3 $ p4'のようなものです。これはうまくいくはずです、なぜ私はPSがどのようにすべての構文を解釈するのかについて説明することができません。 –
@vonPryz Awesome、それはトリックを行うようです...私はPowerShellの経験はほとんどありません。引数のスペース? –