我能否在变量中传递 Powershell Get-ADUser -Properties?

4

我想做类似于这样的事情,主要是为了提高代码的可读性:

$ADProperties = "extensionAttribute1,Department,Company,telephoneNumber"
$ADFilter = "{(objectClass -eq "user") -and (enabled -eq $True)}"

Get-ADUser -Filter $ADFilter -Properties $ADProperties

我遇到了这样的错误:Get-Aduser:一个或多个属性无效。

似乎我曾经看到过一种方法可以通过某种方式传递筛选器属性,但现在找不到了。

编辑 - 这适用于-Properties

$ADProperties = "EmployeeID","EmployeeNumber","extensionAttribute1","Department"

(感谢 Eris)但是这会报错:

$ADProperties = extensionAttribute1,Department,Company,telephoneNumber 

此外,根据Vasili的说法,这个有效:
$str = @("foo","bar")

这适用于-Filter
$ADFilter = {(objectClass -eq "user") -and (enabled -eq $True)}

感谢大家。 MOB

尝试一下,不用引号。 - mjolinor
不完全没有引号,但是将每个属性作为单独的引号字符串。"extensionAttribute1","Department"等。 - Eris
除非它们包含嵌入的空格,否则不需要引用它们。 - mjolinor
2个回答

10
属性参数需要使用string[](数组)数据类型,因此期望输入类似于以下内容的信息:

@("extensionAttribute1","Department","Company","telephoneNumber")


4
你可以通过构建一个字符串变量来执行命令,例如:
$cmd = Get-ADUser -Filter $ADFilter -Properties $ADProperties

然后调用它。
invoke-command $cmd

@MOB 如果某个答案对您有帮助,您可以通过点击此帖子左侧的复选标记“接受”它。 - Anthony Neace

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接