使用多个参数从PowerShell脚本调用PowerShell脚本

使用多个参数从PowerShell脚本调用PowerShell脚本,powershell,Powershell,我知道,这已经被问了好几次,但我似乎无法让它工作。基本上,我使用的是多个ps1文件,因此我不必有非常大的脚本,在本例中,它有两个文件(到目前为止): 迁移Main.ps1 迁移公司。ps1 我想使用invoke expression从Migration Main.ps1调用Migration companys.ps1,但这似乎仅在目标脚本中只有一个参数时有效,在我的例子中有两个参数: param ( [parameter(mandatory=$false )] [datetime

我知道,这已经被问了好几次,但我似乎无法让它工作。基本上,我使用的是多个ps1文件,因此我不必有非常大的脚本,在本例中,它有两个文件(到目前为止):

迁移Main.ps1

迁移公司。ps1

我想使用invoke expression从Migration Main.ps1调用Migration companys.ps1,但这似乎仅在目标脚本中只有一个参数时有效,在我的例子中有两个参数:

param (
    [parameter(mandatory=$false )]
    [datetime]$CompanyDateCull,  
    [parameter(mandatory=$false )]
    [string]$CompanyManagerCull
)

Write-Output $CompanyDateCull
如果我试着这样调用脚本:

Invoke-Expression "$Script_Companies -CompanyDateCull $CompanyDateCull -CompanyManagerCull "Fred""
我将得到以下结果:

Invoke-Expression : A positional parameter cannot be found that accepts argument 'Fred'.
At C:\Users\user\OneDrive\Scripts\Migrations\Imports\FastTrack-Migration-Main.ps1:282 char:1
+ Invoke-Expression "$Script_Companies -CompanyDateCull $CompanyDateCul ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Invoke-Expression], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeExpressionCommand
但是如果我去掉第二个参数

Invoke-Expression "$Script_Companies -CompanyDateCull $CompanyDateCull"
它的工作原理是:

Saturday, 21 September 2013 12:00:00 AM
我也尝试过使用其他命令运行该文件,例如简单地调用PowerShell.exe:

PowerShell.exe -file $Script_Companies -CompanyDateCull $CompanyDateCull -CompanyManagerCull $CompanyManagerCull
但是这会阻止我的任何点源函数被调用的脚本访问,这是一项要求


任何帮助都将不胜感激。

对于第一个查询,您需要用反勾(`)转义双引号:


为什么要使用
Invoke Expression
呢?谢谢你,这很有效:Invoke Expression“$Script_companys-CompanyDateCull'$CompanyDateCull'-CompanyManagerCull'$CompanyManagerCull''
Invoke-Expression "$Script_Companies -CompanyDateCull $CompanyDateCull -CompanyManagerCull `"Fred`""