2017-07-11 31 views
0

我有一个问题,我有2个脚本让名称,然后first.ps1和second.ps1,他们看起来像PowerShell中加入PARAMS同时结合两个脚本

first.ps1:

param(
    [parameter(Mandatory=$True,ValueFromPipeline=$True)][string]$filename="", 
    [parameter(Mandatory=$True,ValueFromPipeline=$True)][string]$arguments="" 
) 

Function WriteFirst 
{ 
    Write-Host $filename 
    Write-Host $arguments 
} 

和second.ps1

param(
    [parameter(Mandatory=$True,ValueFromPipeline=$True)][string]$log="" 
) 

Function WriteSecond 
{ 
    Write-Host $log 
} 

现在用C#(使用嵌入的资源,没有什么特别的),我想这两个脚本连接成一个,因为让说,他们可以是单独的模块从巫婆我可以构建一个最终的SCR ipt例如第一个脚本将执行命令,第二个将读取控制台缓冲区输出。

现在问题是关于婴儿车,我需要加入然后以某种方式,否则他们加起来本身或可能会覆盖??

回答

3

您当前设置PowerShell脚本的方式是在脚本级别设置参数,然后在函数中使用它们。

更好的方法是将参数设置为函数级别。

param(
    [parameter(Mandatory=$True,ValueFromPipeline=$True)][string]$filename="", 
    [parameter(Mandatory=$True,ValueFromPipeline=$True)][string]$arguments="" 
) 

Function WriteFirst 
{ 
    param(
     [parameter(Mandatory=$True,ValueFromPipeline=$True)][string]$filename="", 
     [parameter(Mandatory=$True,ValueFromPipeline=$True)][string]$arguments="" 
    ) 

    Write-Host $filename 
    Write-Host $arguments 
} 

WriteFirst -filename $filename -arguments $arguments 

在从c#check out this post调用这些功能的条款。从它,你可以推断,powershell.AddScript(...).AddParameter(...)会得到你所要求的,但我相信powershell.AddCommand(...).AddParameter(...)是一个更好的方法。