powershell - 如何使用 Powershell 在 AD 中提取管理器的多个属性?
问题描述
我有一个用于从活动目录中提取管理器的单行 powershell 命令,但它只给了我一个属性。我能做些什么来获得更多的属性,如姓名、sAMAccountName 和员工编号。
下面的命令只是给出了经理的雇员编号。
Get-ADUser -Filter * -SearchBase "OU=Users,OU=Office365,DC=example,DC=lan" -Properties * | Select-Object name, employeeNumber, @{Name='Manager';Expression={(Get-ADUser -Property employeeNumber $_.Manager).employeeNumber}} | export-csv -path c:\temp\userexport.csv
所需的 csv 文件头:
name employeeNumber ManagerName ManagerEmployeeNumber
解决方案
如果您尝试在 CSV 文件的单个单元格中存储多个值,则必须在该单元格中创建一个分隔列表。
# Calculated property joining property values with ;
# Use try-catch because some users may not have a manager
# No manager will throw a [ParameterBindingValidationException] exception.
$ManagerProp = @{
Name='Manager'
Expression={
try {
$user = Get-ADUser $_.Manager -Properties EmployeeNumber
"{0};{1};{2}" -f $user.Name,$user.SamAccountName,$user.EmployeeNumber
}
catch { }
}
}
Get-ADUser -Filter * -SearchBase "OU=Users,OU=Office365,DC=example,DC=lan" -Properties EmployeeNumber,Manager |
Select-Object Name,EmployeeNumber,$ManagerProp |
Export-Csv -Path c:\temp\userexport.csv -NoType
-f
是字符串格式运算符。
-Properties *
请注意,由于检索不需要的属性需要开销,因此使用效率不高。
您可以为每个Manager
属性赋予其自己的属性:
Get-ADUser -Filter * -SearchBase "OU=Users,OU=Office365,DC=example,DC=lan" -Properties EmployeeNumber,Manager |
Foreach-Object {
$obj = [pscustomobject]@{
Name = $_.Name
EmployeeNumber = $_.EmployeeNumber
Manager_Name = ''
Manager_SamAccountName = ''
Manager_EmployeeNumber = ''
}
if ($_.Manager) {
$Manager = Get-ADUser $_.Manager -Properties EmployeeNumber
$obj.Manager_Name = $Manager.Name
$obj.Manager_SamAccountName = $Manager.SamAccountName
$obj.Manager_EmployeeNumber = $Manager.EmployeeNumber
}
$obj
}
} | Export-Csv -Path c:\temp\userexport.csv -NoType
推荐阅读
- javascript - Vue JS 非 prop 属性和禁用属性继承
- asterisk - Asterisk 不断混淆公共和私有 IP,因此当软电话位于 NAT 之后时,呼叫没有音频
- python - VS Code - 在集成终端中切换 Python 版本
- node.js - 如何从nodejs渲染图像以使用axios对js做出反应
- python - 如何将两个列表从传递给函数的列表映射到字典中
- node.js - 经济命令:不允许用户给自己钱
- vbscript - FileExists 返回 False
- html - 如何正确保存网站的html代码?
- c++ - 如何将多个主要功能上传到 1 个 GitHub 存储库?
- c# - LINQ Query with method syntax