2015-02-02 4 views
2

Я использую Powershell (V4), и я следую коду, давая here, однако он вызывает ошибку при запуске кода.Powershell - Использование 7zip с параметрами

Мой код:

[string]$zipPath="C:\Users\someUser\7z.exe" 
[string]$parameters= 'a', '-tzip','C:\Users\someUser\Desktop\Archive.zip','C:\Users\someUser\Desktop\Test' 

Powershell Вид:

PS C: \ Users \ someUser> $ zipPath = "C: \ Users \ someUser \ 7z.exe" $ параметров = 'а', '-tzip', 'C: \ Users \ someUser \ Desktop \ Archive.zip', 'C: \ Users \ someUser \ Desktop \ Test' параметры & $ zipPath $

& $zipPath $parameters 

Выход:

7-Zip (A) 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 


Error: 
Incorrect command line 

ответ

1

Попробуйте использовать Start-Process с $parameters как -ArgumentList:

Start-Process $zipPath -ArgumentList $parameters -wait 
+0

Да, это сработало. Благодарю. Просто из любопытства, почему не удалось так, как показал пример? –

+0

Это должно было сработать, если бы вы просто использовали его как обычную строку, но я думаю, '' и 'не знает, как разбирать массив, чтобы получить параметры программы, тогда как' Start-Process' делает. – arco444

0

Это проходит все ваши аргументы в виде одной строки, например:

2> $ec = 'echoargs' 
3> & $ec $parameters 
Arg 0 is <a -tzip C:\Users\someUser\Desktop\Archive.zip C:\Users\someUser\Desktop\Test> 

Command line: 
"C:\Users\hillr\Documents\WindowsPowerShell\Modules\Pscx\Apps\EchoArgs.exe" "a -tzip C:\Users\someUser\Desktop\Archive. 
zip C:\Users\someUser\Desktop\Test" 

Просто передайте свой аргумент Обычно ев:

4> & $ec a -tzip C:\Users\someUser\Desktop\Archive.zip C:\Users\someUser\Desktop\Test 
Arg 0 is <a> 
Arg 1 is <-tzip> 
Arg 2 is <C:\Users\someUser\Desktop\Archive.zip> 
Arg 3 is <C:\Users\someUser\Desktop\Test> 

Command line: 
"C:\Users\hillr\Documents\WindowsPowerShell\Modules\Pscx\Apps\EchoArgs.exe" a -tzip C:\Users\someUser\Desktop\Archive.z 
ip C:\Users\someUser\Desktop\Test 

КСТАТИ echoargs является инструментом из PowerShell Community Extensions.