Powershell Invoke-Expression 找不到匹配参数名称 =“”的参数

Powershell Invoke-Expression A parameter cannot be found that matches parameter name = ""

我正在尝试从其他脚本调用 Ps 脚本。这些脚本都在同一路径中。 我尝试调用的脚本也有 4 个参数。

当我使用参数从 powershell 执行该文件时,它可以正常工作。

但是用Invoke-Expression 命令调用它不起作用。 继续收到错误:

'A parameter cannot be found that matches parameter name'

带有参数的脚本:

        param ([Parameter(Mandatory = $true)]
        [string] $Samname,
        [string] $Fullname,
        [string] $Password,
        [string] $Groups
    )    

$securePassword = ConvertTo-SecureString $Password -AsPlainText -Force

New-localuser -name $Samname -FullName $Fullname -password $securePassword -PasswordNeverExpires -UserMayNotChangePassword

#Add the User to the Groups

$localGroups = Get-LocalGroup
[string[]]$GroupArray = $Groups.Split(' ')
    foreach ($localgroup in $localGroups){

        foreach ($group in $GroupArray){

            $group = $group.Replace(';', '') 
 
        if ($group.toString().Equals($localgroup.toString())){
            Add-LocalGroupMember -Group $localgroup -Member $samname
        }
    }
}

带有调用表达式命令的脚本:

$XmlDocument = 'C:\SomeFile\toPs\TmpUser.config'
[XML]$XmlFile = Get-Content $XmlDocument

[string] $Samname = $XmlFile.User.Username
[string] $Fullname = $XmlFile.User.Fullname
[string] $Password = $XmlFile.User.Password
[string] $Groups = $XmlFile.User.Groups 

$script = ".\CreateUser.ps1" 

Invoke-Expression $script "-Samname $Samname -Fullname $Fullname -Password $Password -Groups $Groups"

当我调用脚本时,我不确定我是否以正确的方式使用参数。

感谢您的帮助:)

如果没有完整的错误消息,很难准确判断出什么问题 Invoke-Expression,但好消息是 您根本不需要 Invoke-Expression !

使用the invocation operator(也称为“调用运算符”,&)代替,它原生支持参数绑定:

$XmlDocument = 'C:\SomeFile\toPs\TmpUser.config'
[XML]$XmlFile = Get-Content $XmlDocument

[string] $Samname = $XmlFile.User.Username
[string] $Fullname = $XmlFile.User.Fullname
[string] $Password = $XmlFile.User.Password
[string] $Groups = $XmlFile.User.Groups 

$script = ".\CreateUser.ps1" 

& $script -Samname $Samname -Fullname $Fullname -Password $Password -Groups $Groups