Канонический параметр параметра Powershell для непохожих командлетов - PullRequest
0 голосов
/ 25 сентября 2018

Есть ли правильный способ использовать одинаковую $parameters в обоих операторах Get-ADUser и Select в приведенном ниже коде?

Get-ADUser имеет параметр с именем «Свойства», а Select имеет параметр с именем «Свойство».

Я не хочу управлять несколькими копиями переменной $parameters.

Любые предложения приветствуются.

import-module ActiveDirectory

$user = "SomeUserName"

$parameters = @{
    "Properties" = @(
        "msExchWhenMailboxCreated",
        "whenCreated"
     )
}

function get-ExchangeUserData {

    foreach ($user in $users){

        # Select @parameters does not work with Select.
        get-aduser $user @parameters | select @parameters

    }

}

1 Ответ

0 голосов
/ 25 сентября 2018

Есть несколько способов сделать это, но у всех здесь могут быть аргументы против вашей цели.

Используйте сокращение параметров в ваших интересах

$parameters = @{"Propert" = @("msExchWhenMailboxCreated", "whenCreated")}

# Select @parameters does not work with Select.
get-aduser user @parameters | select @parameters

Мы задаем ключ в хеш-таблицев «собственность», которая однозначна как в Get-ADUser, так и в Select-Object.Таким образом, вы по-прежнему добавляете в оба командлета одну и ту же информацию.Вы также можете использовать опору, которая выглядит более приятной и передает то же значение.

Следите за псевдонимами параметров, которые работают в вашу пользу

Хотя это предыдущее решение круто и все это действительно не нужно в в этом случае , поскольку Get-Aduserподдерживает 'свойство' в качестве псевдонима .$parameters = @{"Property" = @("msExchWhenMailboxCreated", "whenCreated")} будет работать просто отлично.

Разбейте свойства на другую переменную или вызовите ее отдельно

На самом деле не разбрызгивается, но это соответствует логике ведения одного списка, так как вы сказали:

Я делаюне хотите управлять несколькими копиями переменной $parameters.

$props = "msExchWhenMailboxCreated", "whenCreated"

$parameters = @{"Properties" = @($props)}

get-aduser user @parameters | select $props

или

$parameters = @{"Properties" = @("msExchWhenMailboxCreated", "whenCreated")}

# Select @parameters does not work with Select.
get-aduser user @parameters | select $parameters.Properties
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...