【发布时间】:2022-01-31 05:53:08
【问题描述】:
我正在尝试使用 7-Zip 备份 Powershell (v2) 脚本中的一些文件。
我有:
$zipPath = "C:\Program Files\7-Zip\7z.exe"
[Array]$zipArgs = "-mx=9 a", "`"c:\BackupFolder\backup.zip`"", "`"c:\BackupFrom\backMeUp.txt`""
&$zipPath $zipArgs;
但是当我运行它时,我得到:
7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
Error:
Incorrect command line
把这个写到我得到的屏幕上:
C:\Program Files\7-Zip\7z.exe -mx=9 a "c:\BackupFolder\backup.zip" "c:\BackupFrom\backMeUp.txt"
所以我假设我需要在 7z.exe 的路径周围加上引号,这给了我:
$zipPath = "C:\Program Files\7-Zip\7z.exe"
$zipPath = " `"$zipPath`" "
[Array]$zipArgs = "-mx=9 a", "`"c:\BackupFolder\backup.zip`"", "`"c:\BackupFrom\backMeUp.txt`""
&$zipPath $zipArgs;
然后我收到以下错误:
The term '"C:\Program Files\7-Zip\7z.exe"' is not recognized as the name of a cmdlet, function, script file
, or operable program. Check the spelling of the name, or if a path was included, verify that the path is c
orrect and try again.
At C:\BackupScript\Backup.ps1:45 char:22
+ & <<<< `"$zipPath`" $zipArgs;
+ CategoryInfo : ObjectNotFound: ("C:\Program Files\7-Zip\7z.exe":String) [], CommandNotFound
Exception
+ FullyQualifiedErrorId : CommandNotFoundException
写出来给我:
"C:\Program Files\7-Zip\7z.exe" -mx=9 a "c:\BackupFolder\backup.zip" "c:\BackupFrom\backMeUp.txt"
直接粘贴到命令窗口时效果如预期。 我一直试图弄清楚这一点,但假设我遗漏了一些东西(可能很明显)。任何人都可以看到我需要做什么才能运行吗?
【问题讨论】:
-
我最近写的一篇文章可能会有所帮助:Running Executables in PowerShell。试试
& "C:\Program Files\7-Zip\7z.exe" "-mx=9" a C:\BackupFolder\Backup.zip C:\BackupFrom\backMeUp.txt。 -
干杯,这是一篇有趣的文章。以后我需要好好读书。我想你可能已经有了答案。而我有
"-mx=9 a"我需要的是"-mx=9" a。我不能使它与 $zipArgs 变量一起使用,但它确实与& "$zipPath" "-mx=9" a "c:\BackupFolder\backup.zip" "c:\BackupFrom\backMeUp.txt"一起使用 -
正确;为防止 PowerShell 将
-mx=9解释为运算符,请使用引号或使用反引号转义参数(如文章中所述)。 -
试试
&$zipPath @zipArgs
标签: powershell 7zip