我试图获取已启用用户的员工编号(employeenumber
)及其电子邮件地址(mail
)的列表,并在没有标题的情况下对其进行格式化,并在字段之间使用单个空格PowerShell中。
该脚本大部分都有效,但如果employeenumber
字段为空,我想将其排除。如果电子邮件地址为空,则无关紧要。如果员工编号不存在,我现在得到的是空格。
我的剧本:
Get-ADUser -Filter 'enabled -eq $true' -Properties employeenumber, mail |
select -Property employeenumber, mail |
Format-Table -HideTableHeaders |
Out-File allusers_email.txt
我尝试将Get-ADUser
放入数组并执行foreach
,但输出为空。我使用PowerGUI,当单步执行foreach
时,employeenumber
的值是用户的可分辨名称,当脚本完成时输出文件为空。
我还使用以下内容尝试删除多余的空格,但它无效。
(gc allusers_email.txt) |
? {$_.Trim() -ne ""} |
Set-Content allusers_email.txt
使用Kiril解决方案我能够得到我需要的东西。我现在需要更改它,以便只输出今天已更改的用户对象。我添加了一个变量来包含今天的日期,我相信我应该使用Get-ADObject并对whenchanged属性进行过滤。但是,我收到了错误。我在Get-ADObject命令中缺少什么?
$dte=Get-Date
Get-ADUser -Filter 'enabled -eq $true' -Properties employeenumber, mail, ipPhone, mobile |
Where { $_.employeenumber -ne $null } |
Get-ADObject -Filter 'whenchanged -eq $dte'
Select @{Name='Custom';Expression={('{0} {1} {2} {3}' -f $_.employeenumber,$_.mail,$_.ipPhone,$_.mobile).Trim()}} |
Select -ExpandProperty Custom |
Out-File EMailStream.txt
我最终使用以下脚本:
$dte=Get-Date -Hour 0 -Minute 00 -Second 00
Get-ADUser -Filter 'enabled -eq $true' -Properties whenchanged, employeenumber, mail, ipPhone, mobile |
Where { $_.employeenumber -ne $null -and $_.whenchanged -gt $dte } |
Select @{Name='Custom';Expression={('{0} {1} {2} {3}' -f $_.employeenumber,$_.mail,$_.ipPhone,$_.mobile).Trim()}} |
Select -ExpandProperty Custom |
Out-File EMailStream.txt
答案 0 :(得分:0)
尝试添加过滤条件,并创建组合属性值,如下所示:
Get-ADUser -Filter 'enabled -eq $true' -Properties employeenumber, mail |
Where { $_.employeenumber -ne $null } |
Select @{Name='Custom';Expression={('{0} {1}' -f $_.employeenumber,$_.mail).Trim()}} |
Select -ExpandProperty Custom |
Out-File allusers_email.txt