Export servicii windows si comparare intre exporturi in powershell

Rezolvare problema (Fix IT)

Situatie

Avem nevoie sa verificam dupa un restart daca serviciile au pornit sau nu, si nu vrem sa luam la rand toate serviciile.Pentru a exporta toate serviciile care rulează pe un server Windows și a le compara cu o listă după ce serverul este repornit, puteți utiliza PowerShell.

Solutie

Pasi de urmat

Exportarea serviciilor înainte de repornire

Deschideți PowerShell cu privilegii de administrator și rulați următoarea comandă pentru a exporta lista de servicii într-un fișier CSV:
Get-Service | where-object {$_.Status -eq "Running" -and $_.StartMode -ne "Disabled"} | Export-Csv -path "C:\services_before_reboot.csv.csv"

Această comandă va exporta o listă a tuturor serviciilor care sunt în prezent rulate și care nu sunt dezactivate. Fișierul CSV va fi salvat în directorul C.

  • Reporniți serverul
  • Reporniți serverul în modul preferat. După ce serverul este repornit, puteți trece la pasul următor.

Exportarea serviciilor după repornire

Deschideți din nou PowerShell cu privilegii de administrator și rulați următoarea comandă pentru a exporta lista de servicii după repornire:

Get-Service | where-object {$_.Status -eq "Running" -and $_.StartMode -ne "Disabled"} | Export-Csv -path "C:\services_after_reboot.csv"

Această comandă va exporta o listă a tuturor serviciilor care sunt în prezent rulate și care nu sunt dezactivate. Fișierul CSV va fi salvat în directorul C:.

Importam in powershell cele 2 fisiere csv si le vom incarca intr-o variabila:

$beforeReboot = Import-Csv -Path "C:\services_before_reboot.csv"
$afterReboot = Import-Csv -Path "C:\services_after_reboot.csv"

Pentru a compara cele două fișiere CSV:

Deschideți PowerShell cu privilegii de administrator. Rulați următoarea comandă:

Compare-Object $beforeReboot $afterReboot -Property "DisplayName" -IncludeEqual | Export-Csv -path "C:\compare_services.csv" –notypeinformation

Comanda aceasta v-a exporta intr-un fisier statusul la servicii.

Parametrii SideIndicator și IncludeEqual fac parte din cmdlet-ul Compare-Object din PowerShell și vă ajută să interpretați rezultatele comparației între două obiecte.

  • SideIndicator: Acest parametru indică direcția diferenței. Vă spune pe care “parte” a comparației se găsește obiectul. Valorile posibile sunt:
    • <=: Obiectul există în ReferenceObject (primul obiect pe care îl specificați).
    • =>: Obiectul există în DifferenceObject (al doilea obiect pe care îl specificați).
  • IncludeEqual: Acest parametru este folosit pentru a include obiectele care sunt la fel în ambele ReferenceObject și DifferenceObject în rezultate. În mod implicit, Compare-Object raportează doar diferențe.

In acest caz ReferenceObject era $beforeReboot, iar DifferenceObject era $afterReboot. Dacă un serviciu rula anterior, dar acum nu rulează, veți vedea, în mod obișnuit, serviciul listat cu SideIndicator îndreptat către ReferenceObject (lista serviciilor înainte de repornire). Va arăta ceva de genul:

plaintext

InputObject     SideIndicator

———–     ————-

NumeServiciu     <=

În acest caz:

  • NumeServiciu este serviciul care rulează anterior (în ReferenceObject).
  • <= în coloana SideIndicator indică faptul că serviciul există în ReferenceObject, dar nu există în DifferenceObject, ceea ce înseamnă că rulează anterior, dar acum nu rulează.

Deci, dacă vedeți un serviciu cu <= în coloana SideIndicator, înseamnă că serviciul rula anterior, dar acum nu mai rulează. Acest lucru indică schimbarea stării serviciului de la rulează la nederulare după repornire.

Tip solutie

Permanent

Voteaza

(5 din 13 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?