Windows 提交属性以获取ADUser时出现错误?保存到CSV文件(Powershell)

Windows 提交属性以获取ADUser时出现错误?保存到CSV文件(Powershell),windows,powershell,active-directory,Windows,Powershell,Active Directory,下面是一个非常简化的Powershell脚本版本,我想使用它为给定OU中的用户返回ADUser属性(CSV格式),如名称、givenName、Office等 [void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') $title = 'Get-ADUser Properties' $msg = 'Enter desired User properties, each seperated by a co

下面是一个非常简化的Powershell脚本版本,我想使用它为给定OU中的用户返回ADUser属性(CSV格式),如名称、givenName、Office等

[void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')

$title = 'Get-ADUser Properties'
$msg   = 'Enter desired User properties, each seperated by a comma:'
$default = "name, office"
$propertiesSought = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title, $default)

get-aduser -filter * -properties * -searchbase $OU | select $propertiesSought | Export-Csv -Path "C:\Users\Administrator\Desktop\temp.csv"

该脚本提示用户在InputBox中输入逗号分隔的属性,然后将其另存为变量。在保存的CSV文件中,我所能看到的是“Microsoft.ActiveDirectory.Management.ADPropertyValueCollection”,用于我希望看到的每个用户的详细信息

我已尽可能地把问题孤立起来。如果提交的文本是单个单词,如“name”,则一切正常。如果我再添加任何内容,即使没有空格,问题还是会再次出现

此外,当我在ISE中运行脚本并选择不输出到CSV文件时,在控制台的每一行上,我得到的只是OU中每个用户的一组空大括号

把这个修好,对我来说意义重大。谢谢

我已尽可能地隔离问题。如果提交的文本是单个单词,如“name”,则一切正常。如果我再添加任何内容,即使没有空格,问题也会再次出现

你真的很接近

Select Object
接受属性名称或属性表达式的数组,而不是单个逗号分隔的字符串

当您将字符串
“name,email,manager”
传递给
Select Object
时,它开始查找具有文字名称
name,email,manager
-就像您试图访问
$user.“name,email,manager”
的属性一样

将字符串拆分为单独的属性名称,它将起作用:

# ...
$propertiesSought = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title, $default)

# Split input string
$propertiesSought = $propertiesSought -split ',\s*'

Get-ADUser -Filter * -Properties $propertiesSought -searchbase $OU |Select $propertiesSought |Export-Csv ...
我已尽可能地隔离问题。如果提交的文本是单个单词,如“name”,则一切正常。如果我再添加任何内容,即使没有空格,问题也会再次出现

你真的很接近

Select Object
接受属性名称或属性表达式的数组,而不是单个逗号分隔的字符串

当您将字符串
“name,email,manager”
传递给
Select Object
时,它开始查找具有文字名称
name,email,manager
-就像您试图访问
$user.“name,email,manager”
的属性一样

将字符串拆分为单独的属性名称,它将起作用:

# ...
$propertiesSought = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title, $default)

# Split input string
$propertiesSought = $propertiesSought -split ',\s*'

Get-ADUser -Filter * -Properties $propertiesSought -searchbase $OU |Select $propertiesSought |Export-Csv ...

太棒了!我做了一些快速测试,看起来一切都准备好了。:-)太棒了!我做了一些快速测试,看起来一切都准备好了。:-)