传递多个参数的Powershell问题

传递多个参数的Powershell问题,powershell,Powershell,我有以下函数,它将文件版本字符串与实际文件进行比较,如果文件版本较低,则返回1: function FileVersionDetectionCheck() { param([string]$file) $fileversion = (get-item $file).VersionInfo.ProductVersion $fileversionobject = [System.Version]$fileversion $targetversion = [System.Version]::Parse

我有以下函数,它将文件版本字符串与实际文件进行比较,如果文件版本较低,则返回1:

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”