gpt4 book ai didi

powershell - 带有两个 "accept from pipeline"参数的函数

转载 作者:行者123 更新时间:2023-12-03 18:54:32 25 4
gpt4 key购买 nike

我想要一个函数来允许我传入设备 ID 或显示名称,并用它来做一些事情。

在下面的示例中,我传入了一个仅包含设备 ID ($obj.ID | Test-Function) 的客户 PowerShell 对象,但同时包含 $DisplayName$Id 以该值结束。

如何将值强制转换为正确的参数?

function Test-Function {
[CmdletBinding()]
Param (
[Parameter(
Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true
)]
[string]$DisplayName

[Parameter(
Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true
)]
[string]$Id
)
Begin {
#Code goes here
}
Process {
Write-Host "displayname is: $DisplayName" -ForegroundColor Green
Write-Host "displayname is: $Id" -ForegroundColor Green
}
}

最佳答案

你可以用 ParameterSets 解决这个问题.请注意,我还在您的代码和 Write-Host 输出中修复了一个逗号:

function Test-Function 
{
[CmdletBinding()]
Param (
[Parameter(
Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true,
ParameterSetName='DisplayName'
)]
[string]$DisplayName,


[Parameter(
Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true,
ParameterSetName='Id'
)]
[string]$Id
)
Begin {
#Code goes here
}
Process {
Write-Host "displayname is: $DisplayName" -ForegroundColor Green
Write-Host "Id is: $Id" -ForegroundColor Green
}
}

让我们试一试:

[PsCustomObject]@{Id = "hello"} | Test-Function

输出:

displayname is: 
Id is: hello

[PsCustomObject]@{DisplayName = "hello"} | Test-Function

输出

displayname is: hello
Id is:

关于powershell - 带有两个 "accept from pipeline"参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41244734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com