【发布时间】:2015-03-02 16:48:08
【问题描述】:
我正在尝试创建一个“初始”文本文件,该文件将包含所有用户 + 部门 + 直接下属的脚本运行。制作此文件后,我的下一步是以相同的方式创建另一个文件,但将其与原始文件进行比较,以查看用户的部门是否发生了变化。 (目前还不确定如何比较部门价值)
我当前的问题是,即使该过程与我过去制作的另一个程序相同,该部门也不会打印它。此外,当它打印我的直接报告时,它只打印第一个完整扩展名为 CN=...、OU=... 等的报告。
我希望它以这种方式打印:
username | Department(extensionAttribute14) | Direct Reports (as a single string)
we38432 | IT-Security | cm03456: 04555a: ....etc
我的原始脚本将此代码用于部门:
$deps = Get-Aduser -filter {name -like *} -Properties name, extensionAttribute14 | Select name, extensionAttribute14 | Export-CSV $listing -notypeinformation
这很有效。我尝试了{name -like *},但这给了我当前程序中的错误。我知道Export-CSV 可以让它工作,但我不能再使用这种格式了。
对于直接下属,我的原文是这样的:
foreach ($ID in $directReports){
if ($ID -ne $Null){
$directreports = get-aduser $ID
$directreports.name | Out-File $output -Append
}
此代码逐行打印直接报告,但我希望它们在发送到那里时都列在同一个 Excel 单元格中。
我过去使用“:”打印了所有成员的列表,它有效,但直接下属列表并非如此。当我在其他程序中使用这种格式时,我只是得到了错误:
foreach ($member in $empty.members){
$string = $member.substring(3,$member.indexof(",")-3)
$members = $members + ":" + $string
}
我希望有人可以帮助我解决我的两个问题。
Import-Module ActiveDirectory
$documentOld = "C:\Temp\Old_Supervisor_list_mo_yyyy.txt"
Clear-Content $documentOld
$Header = `
"User ID" <#+ "|" + `
"Department" + "|" + `
"Direct Reports"#>
$Header | Out-File $documentOld -Append
$Users = Get-AdUser -Filter * -Properties name, Enabled, Manager, extensionAttribute14 | Select Enabled, name, Manager, extensionAttribute14
foreach ($user in $Users){
if ($user.enabled –eq $true) {
$name = $user.name
$directReports = Get-ADUser -Identity $name -Properties directreports | Select -ExpandProperty directreports
$department = $user.extensionAttribute14
foreach ($ID in $directReports){
if ($ID -ne $Null){
$directreports = get-aduser $ID
# $string = $directreports + ":"
}#end if $ID
}#end foreach $ID
$listing = `
$name + "|" + $deparment + "|" + $directreports#$string
$listing | Out-File $documentOld -Append
}# end if
}# end foreach $user
【问题讨论】:
-
这些字段代表什么?
we38432 | IT-Security | cm03456: 04555a: ....etc。我可以假设一个是用户名,但我希望你告诉我确定。我问是因为您的直接下属不止一个人吗? -
IT-Security 是部门,是的,大多数用户名都有多个直接下属,如“”:“”@Matt
-
您知道您的 PowerShell 版本是什么吗?
Get-Host
标签: powershell report output