[Powershell] Starttyp von Diensten auslesen

  • Ersteller Ersteller Klonky
  • Erstellt am Erstellt am
K

Klonky

Gast
Nabend.


Ich habe gerade das Problem, das ich zwar den Typ des Dienstes auslesen kann (Also ob es Manuell, Automatisch, ect gestartet wird), aber ich kann es nicht so ganz in eine Variable binden. Derzeit bin ich an dem Microsoft Advance Kurs, mein Script funktioniert auch soweit, aber irgendwie komm ich damit nicht weiter.

Folgende Situation; Mit dem Beispiel unten lese ich zwar den einzeln Dienst aus und dort steht dann Starttyp : Manuell zb, aber wenn ich die Variable versuche in Excel auszuschreiben (oder mit Write-host), kommt da nur ne Textwand raus. Irgendwie stimmt dort was nicht. Vielleicht kann mir jemand nen Gedankenstoß geben, wäre echt nett :)

Code:
$excel = new-object -comobject excel.application

$excel.visible = $true

 

$filepath="P:\Excel\mappe1.xlsx"

$workbook=$excel.Workbooks.open($filepath)

 

 

start-sleep 2 #Pause von 2 Sekunden

 

$workbook=$excel.Workbooks.add()

$sheet = $workbook.Worksheets.Item(1)

 

 

#Zellen mit Werten füllen

$sheet.Cells.Item(1,1).value2="_server"

$sheet.Cells.Item(1,2).value2="Name"

$sheet.Cells.Item(1,3).value2="Startmode"

$sheet.Cells.Item(1,4).value2="State"

$sheet.Cells.Item(1,5).value2="Startname"

 

 

 

 

$a=2

 

get-service  | sort name  | foreach {

    $sheet.Cells.Item($a,1).value2="{0}" -f $Server

    $sheet.Cells.Item($a,2).value2="{0}" -f $_.name

 

    $sheet.Cells.Item($a,4).value2="{0:f}" -f $_.status

    $sheet.Cells.Item($a,5).value2="{0}" -f $_.Displayname

$a++

 

$name=$_.name           
#----------------------------------------------------------------------------------
#Hier ist das Problem!
$startup=gwmi win32_service -filter "NAME = '$name'" | fl -prop StartMode 

 

write-host $startup

$sheet.Cells.Item($a,3).value2="{0}" -f $startup

 

}

start-sleep 2 #Pause von 2 Sekunden

 

$filepath="P:\excel\mappe2.xls" #Pfad

$workbook.SaveAs($filepath)

$excel.Application.DisplayAlerts = $False

$excel.quit()

$ExcelProcess=get-process excel

$ExcelProcess | foreach {stop-process ($_.id)}

[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) #Entfernen des

ComObjekts aus dem Speicher
 
$serviceobject=gwmi win32_service -filter "NAME = '$name'"
write-host $serviceobject.GetPropertyValue('StartMode');
 
Zurück
Oben