$missing
- это список строк, поэтому при Echo
их консоль заботится о форматировании их в несколько строк.
Достижение того же в MessageBox
требует, чтобы вы присоединили строки, используя символы новой строки (ASCII 10).
$([String]::Join(([Convert]::ToChar(10)).ToString(), $missing)
В этой строке используется метод String.Join (система) для объединения имен файлов в одну строку, объединенную символами новой строки. [Convert]::ToChar(10)
по существу \n
, но использование этого приводит к тому, что эта символьная строка используется вместо символа новой строки. Мы просто преобразовываем код ASCII 10 в символ (а затем в строку) и используем его для объединения имен файлов.
Вот обновленный скрипт:
$missing = Compare-Object $capture.BaseName $output.BaseName | Select-Object -ExpandProperty InputObject
If($missing -ne $null){
Write-Host 'Here are the missing file(s):'
Echo $missing
# Send pop up alert
$missingWithNewlines = $([String]::Join(([Convert]::ToChar(10)).ToString(), $missing))
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = “Please Process Files”
$Messageboxbody = “
The following are missing:
$missingWithNewlines”
$MessageIcon = [System.Windows.MessageBoxImage]::Warning
[System.Windows.MessageBox]::Show($Messageboxbody,$MessageboxTitle,$ButtonType,$messageicon)
}Else{
# Nothing missing
}
Вот результат: