Вывести пользовательское значение в таблицу PS, если возвращаемое значение равно $null или аналогичному

Я создаю отчет из 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

То, что я хочу сделать, это поместить пользовательское значение в столбец "Срок действия контракта", если они не имеют значения.

Т.е. если у меня нет контракта, значение по умолчанию равно нулю, поэтому в таблице ничего не отображается. Но что, если я захочу вместо этого указать "Нет срока действия контракта" или "Полный срок действия"?

Не могу найти ничего подходящего, используя команду выше. Возможно, я мог бы написать полный сценарий powershell для вывода в файл CSV, не используя такие вещи, как Select и export-csv, но я бы предпочел этого не делать, если только мне это не нужно.

1 ответ

Решение

Ты примерно на 95% пути. Блок сценария в разделе Expression объекта Select-Object является полным блоком сценария, поэтому вы можете выполнить тест прямо там:

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
Другие вопросы по тегам