1

不足しているファイルの名前を表示する単純な PowerShell メッセージ ボックスを作成しました。私はそれらを変数で呼び出します。ISE で変数をエコーすると、それぞれが別の行に表示されますが、メッセージ ボックスに表示されると、スペースで区切られた文字列として表示されます。スペースを `n に置き換える運はありませんでしたが、おそらく間違っていました。

アイデアはありますか?

現在のコード:

$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
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = “Please Process Files”
$Messageboxbody = “
The following are missing:

$missing”
$MessageIcon = [System.Windows.MessageBoxImage]::Warning
[System.Windows.MessageBox]::Show($Messageboxbody,$MessageboxTitle,$ButtonType,$messageicon)
}Else{
}

ISE の出力は次のようになります。

ファイル1

ファイル2

ファイル3

メッセージ ボックスの出力は次のようになります。

ファイル1 ファイル2 ファイル3

4

1 に答える 1

3

$missingは文字列のリストであるため、Echoそれらを使用すると、コンソールはそれらを複数行でフォーマットします。

a で同じことを達成するには、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

}

結果は次のとおりです。

メッセージボックス

于 2018-09-06T18:05:01.070 に答える