Guten Morgen miteinander,
ich habe "leider" direkt zwei Fragen. :-(
Ich habe vor ca. 3 Monaten ein tolles Tool (Arposh Windows System Administration tool ) in einem Powershell Beitrag gefunden und mich entschlossen tiefer in die PS Materie einzusteigen.
Das Tool habe ich schon um einiges erweitern können hänge aber z.Z. an zwei Dingen fest.
1. möchte gerne eine Log off Schaltfläche funktionsfahïg machen bekomme aber den code einfach nicht hin.
Shutdown und Restart funktioniert einwandfrei.
$btnRestart_Click={
Get-ComputerName
$VBRestart = $VBMsg.popup("Are you sure you want to restart " + $ComputerName.ToUpper() + "?",0,"Restart " + $ComputerName.ToUpper()+ "?",4)
Switch ($VBRestart)
{
6 {Restart-Computer -Force -Computername $ComputerName}
7 {}
}
}
}
$btnShutDown_Click={
Get-ComputerName
$VBShutdown = $VBMsg.popup("Are you sure you want to shutdown " + $ComputerName.ToUpper() + "?",0,"Shutdown " + $ComputerName.ToUpper()+ "?",4)
Switch ($VBShutdown)
{
6 {Stop-Computer -Force -Computername $ComputerName}
7 {}
}
}
2. In dem Tool ist ein Datagridfenster eingebunden und durch betätigen einer Schaltfläche werden die Services in diesem Datagrid aufgelisted.
Irgendwie ist das Ganze mit einer XML datei verknüpft wo ich noch nicht so den Durchblick habe.
Ich möchte, dass die Spalte State (Running, Stopped) farblich Running - grün, Stopped - Rot angezeigt wird.
Mit dem normalen PS command ist das für mich kein Problem aber irgendwie funktioniert das nicht in dem Tool.
Der Code sieht folgendermassen aus wobei die stellen mit der Raute von mir in verschiedenen Möglichkeiten (mit und ohne Get-Service | sort-object State | foreach-object etc.) erfolglos ausprobiert wurden. Der Original code ist ohne meine Einträge mit der Raute!
$btnServices_Click={
Get-ComputerName
Initialize-Listview
$SBPStatus.Text = "Retrieving Services..."
Update-ContextMenu (Get-Variable cmsSvc*)
$XML.Options.Services.Property | %{Add-Column $_}
Resize-Columns
$Col0 = $lvMain.Columns[0].Text
$Info = Get-WmiObject Win32_Service -ComputerName $ComputerName -ErrorVariable SysError | Sort Name
Start-Sleep -m 250
if($SysError){$SBPStatus.Text = "[$ComputerName] $SysError"}
else{
$Info | %{
$Item = New-Object System.Windows.Forms.ListViewItem($_.$Col0)
# $Item.BackColor = "White" # Change Background Colour from Service Window
#$Item.ForeColor = "Black" # Change Foreground Colour from Service Window
# }
# if($XML.Options.Services.State.Running.Enabled -eq $true){
# $IItm = New-Object System.Windows.Forms.ListViewItem("State")
# $Item.BackColor = "Green" # Change Background Colour from Service Window
# $Item.ForeColor = "Black" #
## Get-Service | sort-object State | foreach-object{ if ($_.state -eq "stopped") {write-host -f red $_.name $_.state} else{ write-host -f green $_.name $_.state}}
## Get-Service | sort-object Status | foreach-object{ if ($_.status -eq "stopped") {write-host -f red $_.name $_.status} else{ write-host -f green $_.name $_.status}}
#$Item.SubItems.Add($_.Description)
#$lvMain.Items.Add($Item)
ForEach ($Col in ($lvMain.Columns | ?{$_.Index -ne 0})){$Field = $Col.Text;$Item.SubItems.Add($_.$Field)}
$lvMain.Items.Add($Item)
}
$SBPStatus.Text = "Ready"
}
}
Vorab vielen Dank für Eure Hilfe!!