Функция PowerShell, которая принимает несколько параметров с одинаковым именем, но разными значениями - PullRequest
0 голосов
/ 08 июня 2018
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"

Я пытаюсь создать общий сценарий, который можно использовать во многих средах.Проблема с подходом выше состоит в том, что имена атрибутов не обязательно одинаковы в каждой среде.Например, в одной среде это может быть «FirstName», а в другой «Firstname» или «EmployeeNumber» и «EmployeeID»

И для каждого атрибута должен быть создан оператор IF.Не очень масштабируемо.

Поэтому я изучаю создание функции, которая принимает общие параметры.например,

SetPersonAttributes -PersonID "1234" -AttributeName "FirstName" -Value "John" -AttributeName "Lastname" -Value "Doe" -AttributeName "EmployeeID" -Value "9876"

Я не уверен, как начать.Я читал о PowerShell, но я не уверен, что это правильный подход.

Кто-нибудь, кто может подтолкнуть меня в правильном направлении или есть пример того, как этого добиться?

Thx!

1 Ответ

0 голосов
/ 08 июня 2018

Использовать псевдоним параметра Как это:

Function Write-Something {
Param(
[Alias("Text","Word","SomeText")]
[String]$Message
)

    Write-Host $Message

}

Write-Something -Word "a"
Write-Something -SomeText "B"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...