Назад | Перейти на главную страницу

powershell: если результат пуст после команды, вывести текст

Я делаю скрипт для получения учетных записей в Outlook. Для этого я извлекаю файлы .pst и .ost. Но если файла нет, я хочу написать такой вывод, как «файлы не найдены». Это мой код:

 get-childitem -path C:\users\*\AppData\Local\Microsoft\Outlook*  -recurse -force -dept 1 -include *.ost, *.pst | select-object fullname, @{name='Size_MB';expression={$_.length /1MB -as [int]}}, lastwritetime | Sort-Object -Property Size_MB -Descending | out-file c:\test.txt

Я много чего пробовал, но ничего не работает ... есть идеи?

Большое спасибо!

Стандартный подход заключался бы в том, чтобы присвоить результаты вашего Get-ChildItem переменной и оттуда обработать ее с помощью if / else.

Что-то вроде:

$OutlookAccounts = $null;
$OutlookAccounts = get-childitem -path C:\users\*\AppData\Local\Microsoft\Outlook*  -recurse -force -dept 1 -include *.ost, *.pst | select-object fullname, @{name='Size_MB';expression={$_.length /1MB -as [int]}}, lastwritetime;

If ($OutlookAccounts -ne $null)
{
$OutlookAccounts | Sort-Object -Property Size_MB -Descending | out-file c:\test.txt;
}
Else
{
Write-Host "No files found";
}