Puppeteers Blog

Powershelliä UNIX-ylläpitäjille, osa 7

June 18, 2015 

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

Powershelliä UNIX-ylläpitäjille -artikkelisarjan muut osat:

Samuli Seppänen
Petri Lammi
Author archive
menucross-circle