是否有正确的方法在下面的代码中的$parameters
和Get-ADUser
语句中使用相同的Select
变量?
Get-ADUser
有一个名为“Properties”的参数,而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
}
}
有几种方法可以做到这一点,但他们都可以在这里反对你的目标。
$parameters = @{"Propert" = @("msExchWhenMailboxCreated", "whenCreated")}
# Select @parameters does not work with Select.
get-aduser user @parameters | select @parameters
我们将哈希表中的键设置为“属性”,这在Get-ADUser
和Select-Object
中都是明确的。因此,您仍然使用完全相同的信息来绘制两个cmdlet。您也可以使用看起来更令人愉悦的Prop,它传达的意思相同。
虽然之前的解决方案很酷,但在这种情况下,由于Get-Aduser
supports 'property' as an alias,所有这一切都没有必要。 $parameters = @{"Property" = @("msExchWhenMailboxCreated", "whenCreated")}
工作得很好。
不是真正的splatting,但它保持与你说的保持一个列表的逻辑
我不想管理
$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