我写了一个创建HTML文件的函数,现在我正在进行一些改进。当通过管道输送功能时,它可以正常工作,但不会产生所需的动作。
没关系:
Create-FileHTML -Path "L:\" -FileName "Title" "Text1", "Text2"
L:\ Title Text1 Text2
不行:
"Text1", "Text2" | Create-FileHTML -Path "L:\" -FileName "Title"
L:\ Title Text1 Text1
L:\ Title Text2 Text2
在使用管道时,如何将2个值提供给函数以获得与第一个示例相同的结果?
功能:
Function Create-FileHTML {
[CmdletBinding()]
Param (
[parameter(Mandatory=$true,Position=1)]
[ValidateScript({Test-Path $_ -PathType 'Container'})]
[String[]] $Path,
[parameter(Mandatory=$true,Position=2)]
[String[]] $FileName,
[parameter(Mandatory=$true,ValueFromPipeline=$true,Position=3)]
[String[]] $Message1,
[parameter(Mandatory=$false,ValueFromPipeline=$true,Position=4)]
[String[]] $Message2
)
Process {
Write-Host "$Path $FileName $Message1 $Message2"
}
}
感谢您的帮助或提示。
答案 0 :(得分:1)
您无法使用ValueFromPipeline
发送多个参数,请使用ValueFromPipelineByPropertyName
,并发送以下参数:
$params = New-Object psobject -property @{Message1 = 'Text1'; Message2 = 'Text2'}
$params | Create-FileHTML -Path "L:\" -FileName "Title"