当返回的值为$ null或类似值时,将自定义值输出到PS表中

时间:2014-03-25 21:51:28

标签: powershell quest

我正在使用列出合同到期日的用户的AD生成报告。 到目前为止,我已经能够提出这个问题,输出到带有自定义标题的CSV文件并缩短日期。

Get-QADUser -SizeLimit 0 -IncludedProperties AccountExpires,Domain,Name -DontUseDefaultIncludedProperties | Where { $_.Title -ne "Resource" } | Select @{Label="Domain";Expression={(($_.Domain).Name)}},@{Label="Employee Name";Expression={($_.Name)}},@{Label="Contract Expiry Date";Expression={(($_.AccountExpires).ToShortDateString())}},title,department,Office | Export-Csv C:\ExportForHR.csv -NoTypeInformation

我想要做的是在“合同到期日”栏中放置一个自定义值,如果它们没有价值。

即。如果我没有合同,则默认值为null,因此电子表格中不显示任何内容。但是,如果我想在该字段中设置“无合同到期”或“全职到期”,该怎么办?

无法使用上述命令找到任何合适的内容。我可以编写一个完整的PowerShell脚本,通过不使用Select和export-csv之类的东西输出到CSV文件,但我不愿意,除非我真的不得不这样做。

1 个答案:

答案 0 :(得分:0)

你约有95%的路在那里。 Select-Object的Expression部分中的脚本块是一个完整的脚本块,因此您可以在那里执行测试:

Get-QADUser -SizeLimit 0 -IncludedProperties AccountExpires,Domain,Name -DontUseDefaultIncludedProperties | 
Where { $_.Title -ne "Resource" } | 
Select-Object 
  @{Label="Domain";Expression={(($_.Domain).Name)}},
  @{Label="Employee Name";Expression={($_.Name)}},
  @{Label="Contract Expiry Date";Expression={
    if ($_.AccountExpires -ne $null) { 
      $_.AccountExpires).ToShortDateString()
    } else { 
      $CustomValue 
    }
  },
  title,
  department,
  Office 
| Export-Csv C:\ExportForHR.csv -NoTypeInformation