Potlačit chybové výpisy lze buď kompletně, což se dělá nastavením proměnné WarningPreference
$WarningPreference = 'SilentlyContinue'
Tím se potlačí vypisování chyb a skript dělá, jako by se nic nedělo. Nastavit lze i jiné hodnoty, například Stop, Inquire (zobrazí chybové hlášení a čeká na potvrzení pro pokračování) a Continue, které zobrazí chybu a pokračuje dál. Detaily viz. RTFM – About Reference Variables Microsoftu.
Další z mnohem využívanějších způsobů potlačení chyb spočívá v práci se streamem, kdy nějaký příkaz vygeneruje chybu, s kterou se pak pracuje dle nastavení. Jednoduše řečeno, budeme chyby přesměrovávat do „> $null“, jen trochu sofistikovaněji.
Typy streamů:
- Stream 1 – Success Stream
- Stream 2 – Error Stream
- Stream 3 – Warning Stream
- Stream 4 – Verbose Stream
- Stream 5 – Debug Stream
- Stream 6 – Information Stream
- * – All Streams
Tedy, chcete-li potlačit informační hlášení konkrétního příkazu, tak za příkaz přilepíte 6>$null. Chcete-li potlačit chyby uděláte to takto 2>$null atd.. viz. RTFM – About Redirection Microsoftu.
No a nakonec je tu taková vychytávka pro práci s pipeline, která se dá také použít. Nebudu se zde o problematice pipeline rozepisovat (koho to zajímá, může si o tom přečíst hezký článek), ale pokud ve funkci použijete bloky begin a process, které musí být pospolu, tak to co napíšete do bloku begin, bude platit pouze pro danou funkci. Tedy, pokud do beginu napíšete $WarningPreference = ‚SilentlyContinue‘, tak toto nastavení bude platit pouze v dané funkci a nikde jinde. Takto tedy lze potlačit vypisování chyb v rámci celé funkce.
function hello { begin{ $WarningPreference = 'SilentlyContinue' } process { write-host 'Hello :)'} }