PowerShell on loistava skriptityökalu. Se ei ainoastaan auta säästämään aikaa, vaan tarjoaa myös enemmän joustavuutta toistuvien tehtävien suorittamiseen manuaalisesti tai ajastettujen tehtävien avulla. Lähes kaikkien Windows-roolien ja -ominaisuuksien mukana toimitetaan PowerShell-cmdletit.
Voit käyttää oletusarvoisesti käytettävissä olevia Windows-käyttöjärjestelmän cmdlettejä suorittaaksesi operatiivisia tehtäviä, kuten tietyn Windows-palvelun tilan tarkistaminen useissa tietokoneissa, Windows-tietokoneisiin asennettujen ohjelmistojen luettelon tarkistaminen, Windows-palvelinkäyttöjärjestelmiin asennettujen roolien ja ominaisuuksien tarkistaminen ja kerääminen ja paljon muuta.
Yksi Windows-ylläpitäjien usein suorittamista tehtävistä on kriittisten palvelujen tilan tarkistaminen kriittisillä tuotantopalvelimilla, kuten Exchange-palvelimilla, SQL-palvelimilla ja/tai Active Directory -toimialueen ohjaimilla.
Vaikka SCCM:n ja vastaavien työkalujen avulla voi saada raportin tietyn konejoukon palveluiden tilasta, SCCM edellyttää, että SCCM-asiakas toimii kaikilla kohdetietokoneilla, ennen kuin SCCM voi raportoida palveluiden tilasta.
Tässä kohtaa uusin skripti- ja palvelinoppaamme tulee tarpeeseen. Voit käyttää tässä artikkelissa selostettua PowerShell-skriptiä tarkastaa nopeasti ja helposti tiettyjen palveluiden tilan yhdellä tai useammalla Windows-tietokoneella.
Yksittäisen palvelun tilan tarkistaminen
Jos haluat tarkistaa tietyn palvelun tilan etätietokoneessa, voit suorittaa alla olevan PowerShell-komennon:
Get-WMIObject -Computer -Query "Select * From Win32_Service WHERE Name Like "%SomeServiceName%"
Yllä olevan PowerShell-komennon suorittaminen auttaa sinua saamaan tietyn palvelun tilan, joka on määritetty parametrissa ”%SomeServiceName%”. Tämä komento muodostaa yhteyden etätietokoneeseen, joka on määritetty parametrissa ”-Computer”. Haluat todennäköisesti muuttaa sekä tietokoneen että palvelun nimen ennen edellä olevan komennon suorittamista.
Monien palveluiden tilan tarkistaminen
Jos haluat saada luettelon kaikista Windows-palveluista, jotka ovat käynnissä kohdejärjestelmässä, suorita seuraava PowerShell-komento:
Get-WMIObject Win32_Service -Computer | Where {$_.State -eq "Running"} | FT -Auto
Yllä oleva komento luetteloi kaikki Windows-palvelut, jotka ovat käynnissä etätietokoneessa, joka on määritetty parametrissa ”-Computer”, ja tuloste näytetään PowerShell-ikkunassa. Jos haluat tallentaa tulosteen CSV-tiedostoon, lisäys ”Export-CSV” tekee työn, kuten tässä komennossa näkyy:
Get-WMIObject Win32_Service -Computer | Where {$_.State -eq "Running"} | FT -Auto | Export-CSV "C:TempServicesStatus.CSV"
Yksittäisen palvelun tilan tarkistaminen useilla tietokoneilla
Vaikka edellä mainitut PowerShell-komennot auttavat sinua saamaan tietyntyyppisen tai useiden palveluiden tilan yhdestä ainoasta Windows-tietokoneesta, seuraavaa PowerShell-skriptiä voi käyttää, jos haluat nähdä yksittäisen palvelun tilan useista Windows-tietokoneista. Sinun tarvitsee vain luoda tekstitiedosto, joka sisältää Windows-tietokoneiden nimet, ja muuttaa komentosarjan muuttujaa ”$ServiceNameToCheck” siten, että se sisältää palvelun, jonka haluat tarkistaa.
$ServiceNameToCheck ="SomeServiceName"
$ReportFile = "C:TempServiceStatus.CSV"
Remove-item $ReportFile -ErrorAction SilentlyContinue
$ThisSTR = "Computer Name, Service Status"
Add-Content $ReportFile $ThisSTR
$CompFile = "C:TempComputers.TXT"
Foreach ($ComputerName in Get-Content "$CompFile")
{
$Error.Clear()
Get-WMIObject -Computer $ComputerName -Query "Select * From Win32_Service WHERE Name Like "%$ServiceNameToCheck% AND {$_.State -eq "Running"}
IF ($Error.Count -ne 0)
{
$ThisSTR = $ComputerName+", Could Not Connect to Remote Computer or Service Not Running"
Add-Content $ReportFile $ThisSTR
}
else
{
$ThisSTR = $ComputerName+", Running"
Add-Content $ReportFile $ThisSTR
}
}
Write-Host "Service status was retrieved from the list of computers and the output was saved in $ReportFile"
Kun yllä olevan PowerShell-skriptin suoritus on päättynyt, luodaan raporttitiedosto nimeltä ServiceStatus.CSV kansioon ”C:Temp”, joka sisältää muuttujassa ”$ServiceNameToCheck” määritellyn palvelun nimen tilan kaikista ”C:TempComputers.TXT” -tiedostossa mainituista tietokoneista.
Huomaa, että komentosarja tarkistaa, että komento suoritettiin onnistuneesti, ennen kuin se raportoi palvelun tilan. PowerShell-skripti käyttää ”Get-WMIObject” PowerShell-komentoa kerätäkseen tiettyjen palveluiden tilan kohdetietokoneista. Jos Get-WMIObject ei pysty muodostamaan yhteyttä kohdetietokoneeseen tai jos palvelun tilaa ei saada noudettua, se palauttaa raportissa viestin ”Could Not Connect to Remote Computer or Service Not Running” (Ei pystynyt muodostamaan yhteyttä etätietokoneeseen tai Palvelu ei ole käynnissä).
Johtopäätös
Yksittäisten tai useiden palveluiden tilan saaminen yksittäiseltä tai useammalta etätietokoneelta Windows-tietokoneesta on melko helppoa. Vaikka on olemassa yritystyökaluja, joilla voi kerätä Windows-tietokoneiden inventaariotietoja, mukaan lukien palveluiden tila, on myös tapauksia, joissa nämä PowerShell-komennot/skriptit ovat erittäin käteviä, erityisesti silloin, kun tietyn palvelun tila on tarkistettava nopeasti useista Windows-tietokoneista.
Nirmal Sharma on MCSEx3-, MCITP- ja Microsoftin hakemistopalveluiden MVP. Hän on erikoistunut hakemistopalveluihin, Microsoft Azureen, Failover-klustereihin, Hyper-V:hen, System Centeriin ja Exchange-palvelimiin, ja hän on ollut tekemisissä Microsoft-teknologioiden kanssa vuodesta 1994. Vapaa-ajallaan hän haluaa auttaa muita ja jakaa osaamistaan kirjoittamalla vinkkejä ja artikkeleita eri sivustoille ja osallistumalla ADHealthProf.ITDynamicPacks.Net-ratkaisujen Health Packs -ohjelmiin. Nirmalin tavoittaa osoitteesta .
Seuraa ServerWatchia Twitterissä ja Facebookissa
.