Update Infos per Powershell Remote abrufen
Moin zusammen,
ich möchte Remote mit PS den Status, in erster Linie ob eine Fehler beim Update aufgetreten sind, abfragen. Hab was im Netzt gefunden aber funktioniert nicht so wie gewollt. Ich erhalte beim Ausführen den Fehler: Die Benennung "ECodeToName" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Hier scheint Invoke-Command nur die Funktion GetUpdateInfo einzubeziehen....was auch im Scriptblock ersichtlich ist. Wie kann ich nun das Skript dazu bringen die Infos einzuholen?
Sieht hier jemand den Fehler oder hat eine einfachere bzw. bessere Lösung?
Vielen Dank!
ich möchte Remote mit PS den Status, in erster Linie ob eine Fehler beim Update aufgetreten sind, abfragen. Hab was im Netzt gefunden aber funktioniert nicht so wie gewollt. Ich erhalte beim Ausführen den Fehler: Die Benennung "ECodeToName" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Hier scheint Invoke-Command nur die Funktion GetUpdateInfo einzubeziehen....was auch im Scriptblock ersichtlich ist. Wie kann ich nun das Skript dazu bringen die Infos einzuholen?
Sieht hier jemand den Fehler oder hat eine einfachere bzw. bessere Lösung?
Vielen Dank!
function ECodeToName
{
param(
[Parameter(Mandatory=$true)]
[int] $ResultCode)
$Result = $ResultCode
switch($ResultCode)
{
2 {
$Result = "Succeeded"
}
3 {
$Result = "Succeeded With Errors"
}
4 {
$Result = "Failed"
}
}
return $Result
}
function GetUpdateInfo
{
$session = (New-Object -ComObject 'Microsoft.Update.Session')
$history = $session.QueryHistory("",0,50) | ForEach-Object {
$Result = ECodeToName -ResultCode $_.ResultCode
$_ | Add-Member -MemberType NoteProperty -Value $Result -Name Result
$Product = $_.Categories | Where-Object {$_.Type -eq 'Product'} | Select-Object -First 1 -ExpandProperty Name
$_ | Add-Member -MemberType NoteProperty -Value $_.UpdateIdentity.UpdateId -Name UpdateId
$_ | Add-Member -MemberType NoteProperty -Value $_.UpdateIdentity.RevisionNumber -Name RevisionNumber
$_ | Add-Member -MemberType NoteProperty -Value $Product -Name Product -PassThru
Write-Output $_
}
$history | Where-Object {![String]::IsNullOrWhiteSpace($_.title)} |
Select-Object Result, Date, Title, SupportUrl, Product, UpdateId, RevisionNumber
$Logpath = "C:\Users\Administrator\Documents\" + $Server + "_" + $result + ".txt"
#GetUpdateInfo | Out-File -FilePath $Logpath -Append
}
Invoke-Command -ScriptBlock ${function:GetUpdateInfo} -ComputerName srv2019_3 -Credential contoso\administrator | Format-Table > $Logpath
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1482522990
Url: https://administrator.de/contentid/1482522990
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
4 Kommentare
Neuester Kommentar
Invoke-Command -ComputerName srv2019_3 -Credential contoso\administrator -ScriptBlock {
(new-object -ComObject "Microsoft.Update.Session").QueryHistory("",0,50) | ?{$_.ResultCode -in 3,4} | select Date,Title,@{n='Result';e={switch($_.ResultCode){2{"Succeeded"}3{"Succeeded with errors"}4{"Failed"}}}}
}
Du hast den Code falsch kopiert oder falsch angepasst ... Mein Code hat nämlich einen Skriptblock, siehst du an der öffnenden und schließenden geschweiften Klammer und die fehlt bei dir, sieht man in der Fehlermeldung!! Die geöffnete geschweifte Klammer muss hier zwingend in der selben Zeile anfangen, dort darf kein Zeilenumbruch davor sein.
Code funktioniert hier im Test auch einwandfrei.
Grundlagen zur Powershell bitte hier durchlesen
Powershell Leitfaden für Anfänger
Zur Info, das Skript gibt nur etwas aus wenn es auch fehlgeschlagene Updates auf diesem Server gibt!
Code funktioniert hier im Test auch einwandfrei.
Bin mir nicht sicher ob´s damit zusammenhängt. In meinem Code gabs auch einen Fehler im QueryHistory("",0,50)
Nein, das hat mit der Fehlermeldung überhaupt nichts zu tun, läuft hier auf einem Server 2022 im Test ohne Probleme.Grundlagen zur Powershell bitte hier durchlesen
Powershell Leitfaden für Anfänger
Zur Info, das Skript gibt nur etwas aus wenn es auch fehlgeschlagene Updates auf diesem Server gibt!