Powershelliä UNIX-ylläpitäjille, osa 7
Tulosteiden uudelleenohjaus ja paluuarvojen käsittely toimii lähes samoin *NIX-shelleissä ja Windowsin Powershellissä. Alla tarkistetaan Linuxin systemctl-komennolla olemassa olevan (“openvpn”) ja olemattoman (“fake”) palvelun tila, ohjataan sekä tuloste että virhetuloste bittitaivaaseen ja tulostetaan komennon paluuarvo:
$ systemctl status openvpn > /dev/null 2>&1
$ echo $?
0
$ systemctl status fake > /dev/null 2>&1
$ echo $?
3
Kuten näkyy, paluuarvo on 0 jos palvelu on olemassa ja 3 jos sitä ei löydy.
Powershell toimii käytännössä identtisesti (alla käytössä NSSM):
> nssm.exe status openvpn > $null 2>&1
> Write-Host $LastExitCode
0
> nssm.exe status fake > $null 2>&1
> Write-Host $LastExitCode
3
Myös Powershellissä voitaisiin käyttää muuttujaa $?, mutta se ei sisällä numeerista paluuarvoa vaan totuusarvon:
> nssm.exe status openvpn > $null 2>&1
> Write-Host $?
True
> nssm.exe status fake > $null 2>&1
> Write-Host $?
False
Sekä *NIX-shelleissä että Powershellissä voisi tulostevirrat ohjata myös vaihtoehtoisella tavalla:
$ systemctl status openvpn > /dev/null 2> /dev/null
> nssm.exe status openvpn > $null 2> $null