Out-Gridview, даже если данные не найдены
В моем скрипте powershell реализован внешний вид сетки, который показывает все созданные сегодня файлы. Если в указанном пути есть файлы, все работает нормально, а если нет, то ничего не происходит.
Было бы здорово, что сетка появляется, даже если в каталоге нет файлов. Либо в таблице нет элементов или просто может быть уведомление о том, что файлы не найдены.
пример:
gci C:\User\Executions\2018-01-25 | Out-GridView
Все было бы лучше, чем ничего:-)
Конечно, я мог бы использовать Test-Path для запросов и записи в любом месте (например, Write-Host), но более эстетично выводить сообщение в виде сетки.
3 ответа
$list = Get-ChildItem "C:\User\Executions\2018-01-25"
if(($list).count -gt 0){
Get-ChildItem $list | Out-GridView
}else{
'No Data found' | Out-GridView
}
@TheIncorrigible1 спасибо!
Похоже, кто-то меня опередил, но я приведу и мой пример. Шахта пользуется услугами, однако. На моей машине, если команда Get-Service использует -Name s*, она откроет Out-GridView со службами, начинающимися с S. Если команда Get-Service использует -Name x*, она запустит часть Else и откройте Out-GridView с помощью PSCustomObject. Эта версия дает вам возможность пометить столбец. В примере Даниэля де Васко в качестве заголовка столбца вместо моего используется значение по умолчанию "string", в котором используется "Message". Более или менее то же самое, однако, с незначительной настройкой.
If (Get-Service -Name s* -OutVariable Services) {
$Services | Out-GridView
} Else {
$Message = [PSCustomObject]@{
Message = 'No Files Found'
}
$Message | Out-GridView
}
Я чувствую себя щедрым сегодня
try
{
$out = gci C:\User\Executions\2018-01-25
if ($out)
{
$out | Out-GridView
}
else
{
$null = [System.Windows.Forms.MessageBox]::Show("Directory is empty", "Notification", "OK", "Information")
}
}
catch
{
$ErrMsg = $_.Exception.Message
$null = [System.Windows.Forms.MessageBox]::Show("Error Occurred: $ErrMsg", "Error", "OK", "Error")
}