fragen stichworte

Powershell: Wenn das Ergebnis nach einem Befehl leer ist, wird Text ausgegeben

Ich mache ein Skript, um Konten in Outlook abzurufen. Dazu rufe ich PST- und OST-Dateien ab. Wenn jedoch keine Datei vorhanden ist, möchte ich eine Ausgabe wie "Keine Dateien gefunden" schreiben. Dies ist mein Code:

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

Ich habe viele Dinge ausprobiert, aber nichts funktioniert ... irgendeine Idee?

Vielen Dank!

antworten

Der Standardansatz wäre, die Ergebnisse Ihres Get-ChildItem einer Variablen zuzuordnen und von dort aus von einem if/else zu behandeln.

Etwas wie:

$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";
}