繁体   English   中英

接受具有相同名称但值不同的多个参数的PowerShell函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM