不同Cmdlet的规范Powershell参数拼写

时间:2018-09-25 14:00:31

标签: powershell

$parameters Get-ADUser语句中是否有使用 same Select变量的正确方法下面的代码?

Get-ADUser有一个名为“ Property”的参数,而Select有一个名为“ Property”的参数。

我不想管理$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 :(得分:3)

有几种方法可以做到这一点,但它们都可能在这里引起反对您目标的争论。

使用缩短参数的优势

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

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

我们将哈希表中的密钥设置为“ propert”,这在Get-ADUserSelect-Object中都是明确的。因此,您仍将使用完全相同的信息来分发这两个cmdlet。您也可以使用Prop,它看起来更令人愉悦,并且传达相同的含义。

注意对您有利的参数别名

虽然先前的解决方案很酷,但是在所有情况下实际上都不是必需的,因为Get-Aduser supports 'property' as an alias自始至终。 $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