Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell命令仅在参数之间没有空格的情况下工作_Powershell - Fatal编程技术网

PowerShell命令仅在参数之间没有空格的情况下工作

PowerShell命令仅在参数之间没有空格的情况下工作,powershell,Powershell,我尝试使用PowerShell的某些源代码使用7zip提取受密码保护的存档: 此命令无效(7zip是$7zipPath的别名): 我得到了这个错误的答案: 命令行错误: 开关太短: 但是当我删除变量-o和-p之间的空格时,可以提取归档文件。这种行为使我与其他命令行工具(如git等)混淆。?为什么会这样?该行为特定于7-Zip(7z.exe),并适用于您从中调用它的任何程序(shell): 与CLI遵守的广泛使用的约定(如git)不同,7z要求即使是具有强制参数的开关(选项),如-o和-p,也将参

我尝试使用PowerShell的某些源代码使用7zip提取受密码保护的存档:

此命令无效(7zip是$7zipPath的别名):

我得到了这个错误的答案: 命令行错误: 开关太短:
但是当我删除变量-o和-p之间的空格时,可以提取归档文件。这种行为使我与其他命令行工具(如git等)混淆。?为什么会这样?

行为特定于7-Zip(
7z.exe
,并适用于您从中调用它的任何程序(shell):

与CLI遵守的广泛使用的约定(如
git
)不同,
7z
要求即使是具有强制参数的开关(选项),如
-o
-p
,也将参数直接附加到开关名称上
,不允许使用空格:

& 7zip x $zipFile -o"$output" -p"$zipFilePassword"
请注意,通常不需要在PowerShell中的
“…”
(请注意,
$zipFile
中不包含变量引用),即使它们包含空格也是如此。但是,为了将它们直接附加到交换机名称,您需要这样做

或者,您可以将整个标记(开关名称和参数)用双引号括起来:

& 7zip x $zipFile "-o$output" "-p$zipFilePassword"

这回答了你的问题吗?如果你的问题还没有完全回答,请考虑回答或提供反馈。
& 7zip x $zipFile "-o$output" "-p$zipFilePassword"