【发布时间】:2015-12-04 14:20:25
【问题描述】:
我能够在尝试使用它之前执行此命令..
$unzip ="c:\path\To\myZip.zip"
$dst = "c:\destination"
saps "c:\Program Files\winzip\wzunzip.exe" "-d $unzip $dst" -WindowStyle Hidden -Wait
然后我在一个模块中创建了这个函数,我试图将参数传递给..
function RunCmd ($cmd){
write-host "cmd: $cmd"
saps $cmd -WindowStyle Hidden -Wait
}
我已验证模块已正确导入,但是当我尝试将参数传递给函数时,我收到错误,指出无法读取参数。
我尝试了多种方法来传递参数,但没有任何效果。
例子
$cmd = @{'FilePath'= '$unzip';
'ArgumentList'= '-d $unzip dst';}
RunCmd @cmd
RunCmd """$unzip"" ""-d $unzip $dst"""
我注意到命令和参数将通过双引号传递给函数执行第二种选择,但那是我得到参数空异常的时候。
我也尝试过更改函数以分别传递命令和参数,但没有成功..
function RunCmd ($cmd, $args){
write-host "cmd: $cmd"
saps $cmd $args -WindowStyle Hidden -Wait
}
有什么想法吗?
更新:
这是我的新功能..
function RunCmd ($log, $cmd, $args){
Log-Cmd $log
saps -FilePath $cmd -ArgumentList $args -WindowStyle Hidden -Wait
}
也试过了..
> function RunCmd ($log, $cmd, [string[]]$args){
> Log-Cmd $log
> saps -FilePath $cmd -ArgumentList $args -WindowStyle Hidden -Wait }
但是当函数尝试执行时,我收到一个错误,指出参数为空。
Start-Process:无法验证参数“ArgumentList”上的参数。 参数为 null、空或参数集合的元素 包含一个空值。提供一个不包含任何 null 值,然后再次尝试该命令。在 c:\path\to\module\myModule.psm1:39 char:38 + saps -FilePath $cmd -ArgumentList
我尝试了多种方法来调用这个函数..
RunCmd -log $log -cmd $unzip -args '-d', '$unzip', '$dst'
RunCmd $log $unzip '-d', '$unzip', '$dst'
RunCmd $log $unzip "-d", "$unzip", "$dst"
【问题讨论】:
-
显示来自各种尝试的准确调用和准确错误。