powershell加入params,同时结合两个脚本

时间:2017-07-11 06:18:57

标签: c# powershell

我有一个问题,我有一个2脚本,然后名字,然后first.ps1和second.ps1,它们看起来像

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#(使用嵌入式资源,没有什么特别之处)我想将这两个脚本合并为一个,因为我们可以说它们可以是单独的模块,我可以构建一个最终脚本,例如第一个脚本将执行命令,第二个将读输出缓冲区。

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

1 个答案:

答案 0 :(得分: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(...)是一种更好的方法。