Zum Inhalt wechseln


Foto

PS: MS Updates Reportin -> Invoke-Command


  • Bitte melde dich an um zu Antworten
4 Antworten in diesem Thema

#1 Kuddel071089

Kuddel071089

    Member

  • 300 Beiträge

 

Geschrieben 19. Juni 2017 - 09:57

Hallo zusammen,

 

ich bin gerade dabei mir einen Update-Report aller unserer WIndows Server zusammenzubauen.

 

Die Spalten sollen am Ende wir folgt ausgefüllt werden:

Servername;Datum der letzten Installation;Neustart nötig;Betriebssystem

 

Für die Update-Infos verwende ich das PS-Modul "PSWIndowsUpdate".

Da diese ja noch nciht auf jedem Server ist, muss ich es vorher noch verteilen und importieren. Das funktioniert auch.

 

Leider bekomme ich die Infos aus der Remote-Abfrage nicht weiterverarbeitet.

 

BIs jetzt habe ich folgendes

cls



$servers = @("test-server2")



foreach($server in $servers) {

#Check ob das Modul auf dem Server installiert ist. Ansonsten wird es kopiert

IF(!(Test-Path "\\$server\C$\Windows\System32\WindowsPowerShell\v1.0\Modules\PSWindowsUpdate\*")) {copy-item "\\testserver1\D$\PSWindowsUpdate" -Recurse "\\$server\C$\Windows\System32\WindowsPowerShell\v1.0\Modules"}


Invoke-Command -ComputerName $server -ScriptBlock {Import-Module PSWindowsUpdate}

Invoke-Command -ComputerName $server -ScriptBlock {$wuabfrage = Get-WUHistory | Select-Object -first 1}

#Check, ob ein Reboot nötig ist

Invoke-Command -ComputerName $server -ScriptBlock {$reboot = Get-WURebootStatus}

#Entfernung von "localhos: " aus der Varaible

$reboot = $reboot -replace "localhost: ", ""



#Abfrage des Betriebssystems

$serverinfos = Get-ADComputer $server -Properties * | Select operatingsystem



#Output

"$($wuabfrage.ComputerName);$($wuabfrage.Date);$reboot;$($serverinfos.operatingsystem))"

}

Ich hoffe ihr könnt mir weiter helfen.

 

Vielen Dank schon einmal


Bearbeitet von Kuddel071089, 19. Juni 2017 - 09:58.


#2 Dukel

Dukel

    Board Veteran

  • 9.097 Beiträge

 

Geschrieben 19. Juni 2017 - 10:04

Du musst die Daten in der Remote Abfrage zurückgeben und im Lokalen Script speichern.

 

https://msdn.microso...ut/about_remote


Stop making stupid people famous.


#3 Kuddel071089

Kuddel071089

    Member

  • 300 Beiträge

 

Geschrieben 19. Juni 2017 - 11:11

Danke für den Tip. Habe es jetzt umgestellt.

cls

$servers = @("testserver2")



foreach($server in $servers) {
#Check ob das Modul auf dem Server installiert ist. Ansonsten wird es kopiert
IF(!(Test-Path "\\$server\C$\Windows\System32\WindowsPowerShell\v1.0\Modules\PSWindowsUpdate\*")) {copy-item "\\testserver1\D$\PSWindowsUpdate" -Recurse "\\$server\C$\Windows\System32\WindowsPowerShell\v1.0\Modules"}


Invoke-Command -ComputerName $server -ScriptBlock {Import-Module PSWindowsUpdate}
 
#Invoke-Command -ComputerName $server -ScriptBlock {$wuabfrage = Get-WUHistory | Select-Object -first 1}
$wuabfrage = Invoke-Command -ComputerName $server -ScriptBlock {Get-WUHistory | Select-Object -first 1}


#Check, ob ein Reboot nötig ist
$reboot = Invoke-Command -ComputerName $server -ScriptBlock {Get-WURebootStatus}
#Entfernung von "localhost: " aus der Varaible
$reboot = $reboot -replace "localhost: ", ""

#Abfrage des Betriebssystems
$serverinfos = Get-ADComputer $server -Properties * | Select operatingsystem

#Output
"|$($wuabfrage.ComputerName)|$($wuabfrage.Date)|$reboot|$($serverinfos.operatingsystem))|"
}

Leider bekomme ich jetzt beim Befehl "Get-WURebootStatus" einen Fehler

Eine Instanz der COM-Komponente mit der CLSID {C01B9BA0-BEA7-41BA-B604-D0A36F469133} konnte aufgrund des folgenden Fehlers nicht von der IClassFactory erstellt werden:
80070005 Zugriff verweigert (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED)).
    + CategoryInfo          : NotSpecified: ( :) [New-Object], UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.NewObjectCommand
    + PSComputerName        : testserver2

Bearbeitet von Kuddel071089, 19. Juni 2017 - 11:13.


#4 Dukel

Dukel

    Board Veteran

  • 9.097 Beiträge

 

Geschrieben 19. Juni 2017 - 12:26

Bestimmte Sachen gehen mit PSWindowsUpdate nicht remote. Hierfür gibt es Invoke-WUInstall (oder so ähnlich), mit dem man ein Script remote ausführen kann (per Task Scheuler), das Ergebnis z.B. in eine Datei schreiben und später abholen kann.


Stop making stupid people famous.


#5 MurdocX

MurdocX

    Senior Member

  • 359 Beiträge

 

Geschrieben 19. Juni 2017 - 18:06

Als kleinen Tipp: Nutze "-AsJob" und frage die Daten dann wieder ab. Des Weiteren kannst du alle Abfragen in ein Invoke-Command packen, um viel Zeit zu sparen  ;)


Mit freundlicher Unterstützung
Jan