[英]PowerShell function that accepts multiple parameters with the same name, but different values
Function SetPersonAttributes
{
[CmdletBinding()]
Param (
[Parameter(Mandatory=$true)][string]$PersonID,
[Parameter(Mandatory=$false)][string]$FirstName,
[Parameter(Mandatory=$false)][string]$MiddleName,
[Parameter(Mandatory=$false)][string]$LastName,
[Parameter(Mandatory=$false)][string]$FullName,
[Parameter(Mandatory=$false)][string]$UserLogonName,
[Parameter(Mandatory=$false)][string]$EmployeeNumber,
[Parameter(Mandatory=$false)][string]$EmailAddress
)
If ($FirstName)
{
$Body = @{
name = FirstName
textValue = @{
value = $FirstName
}
}
$SetPersonAttributes = id_query -action SetPersonAttributes -PersonID $PersonID -Body $Body
}
If ($LastName)
{
$Body = @{
name = LastName
textValue = @{
value = $LastName
}
}
$SetPersonAttributes = id_query -action SetPersonAttributes -PersonID $PersonID -Body $Body
}
SetPersonAttributes -PersonID "1234" -FirstName "John" -LastName "Doe" -EmployeeID "9876"
我正在尝试构建可在许多环境中使用的通用脚本。 上面方法的问题是属性名称不一定在每个环境中都相同。 例如,在一个环境中,它可以是“名字”,在另一个环境中,可以是“名字”或“ EmployeeNumber”和“ EmployeeID”
对于每个属性,都需要创建一个IF语句。 规模不大。
因此,我正在考虑创建一个接受通用参数的函数。 例如
SetPersonAttributes -PersonID "1234" -AttributeName "FirstName" -Value "John" -AttributeName "Lastname" -Value "Doe" -AttributeName "EmployeeID" -Value "9876"
我不确定如何开始。 我一直在阅读有关PowerShell泼溅的信息,但是我不确定这是否是正确的方法。
有人可以将我推向正确的方向,或者有一个如何实现此目标的示例?
谢谢!
使用参数别名,如下所示:
Function Write-Something {
Param(
[Alias("Text","Word","SomeText")]
[String]$Message
)
Write-Host $Message
}
Write-Something -Word "a"
Write-Something -SomeText "B"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.