Вывод пользовательского значения в таблицу 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

Что я хочу сделать, так это поместить пользовательское значение в столбец «Дата истечения срока действия контракта», если они не имеют значения.

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

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


person Aaron Tanner    schedule 25.03.2014    source источник


Ответы (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
person KevinD    schedule 25.03.2014
comment
Спасибо, приятель, это был ответ, который я искал. Я немного отредактировал ваш ответ, так как для его запуска не хватало нескольких вещей (просто '`' и '(' ). - person Aaron Tanner; 26.03.2014