这是一个非常简化的Powershell脚本,我想用它为给定OU中的用户返回ADUser属性(在CSV中),比如name、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中每个用户的一组空大括号。
解决这个问题对我来说意义重大。谢谢。
发布于 2021-02-26 02:33:07
我已经尽可能地隔离了这个问题。如果提交的文本是一个单词,如"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 ...
https://stackoverflow.com/questions/66374309
复制相似问题