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
我正在尝试从其他脚本调用 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