传递多个参数的Powershell问题
我有以下函数,它将文件版本字符串与实际文件进行比较,如果文件版本较低,则返回1:传递多个参数的Powershell问题,powershell,Powershell,我有以下函数,它将文件版本字符串与实际文件进行比较,如果文件版本较低,则返回1: function FileVersionDetectionCheck() { param([string]$file) $fileversion = (get-item $file).VersionInfo.ProductVersion $fileversionobject = [System.Version]$fileversion $targetversion = [System.Version]::Parse
function FileVersionDetectionCheck() {
param([string]$file)
$fileversion = (get-item $file).VersionInfo.ProductVersion
$fileversionobject = [System.Version]$fileversion
$targetversion = [System.Version]::Parse("11.0.9700")
Write-Output "File Version:" $fileversionobject
Write-Output "Target Version:" $targetversion
if($fileversionobject -ge $targetversion) {
return 0
}
else {
return 1
}
}
FileVersionDetectionCheck("C:\program files\internet explorer\iexplore.exe")
这段代码运行良好。但是,如果我添加第二个字符串参数
function FileVersionDetectionCheck() {
param([string]$file,[string]$version)
$fileversion = (get-item $file).VersionInfo.ProductVersion
$fileversionobject = [System.Version]$fileversion
#$targetversion = [System.Version]::Parse("11.0.9700")
$targetversion = [System.Version]$version
Write-Output "File Version:" $fileversionobject
Write-Output "Target Version:" $targetversion
if($fileversionobject -ge $targetversion) {
return 0
}
else {
return 1
}
}
FileVersionDetectionCheck("C:\program files\internet explorer\iexplore.exe",
"11.0.9700")
它的错误是:
获取项目:找不到路径“C:\program files\internet explorer\iexplore.exe 11.0.9700”,因为它不存在
似乎正在将这两个参数作为单个字符串读取
据我所知,这是向函数传递多个参数的有效方法。我是否做错了什么,或者这可能是一个bug?Powershell函数与其他语言中的方法不同。从函数名
函数文件versionDetectionCheck()
中删除括号,然后在调用函数时不要使用逗号或括号。比如说
myFunction firstParam secondParam
上面的代码看起来是这样的
FileVersionDetectionCheck“C:\program files\internet explorer\iexplore.exe”“11.0.9700”
要添加到Jason的答案中,下面是这两个参数的外观
function FileVersionDetectionCheck
{
param([string]$file,[string]$version)
$fileversion = (get-item $file).VersionInfo.ProductVersion
$fileversionobject = [System.Version]$fileversion
#$targetversion = [System.Version]::Parse("11.0.9700")
$targetversion = [System.Version]$version
Write-Output "File Version:" $fileversionobject
Write-Output "Target Version:" $targetversion
if($fileversionobject -ge $targetversion) {
return 0
}else {
return 1
}
}
FileVersionDetectionCheck -file "C:\program files\internet explorer\iexplore.exe" -version "11.0.9700")
你的第一句话很有争议,python、bash、cmd、powershell都是一样的。这部分由于某种原因被切断了<代码>-版本“11.0.9700”