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