getr0ffen
Goto Top

PS Script zu Netwerkinformationen Softwarestände etc

Hi,

ich begebe mich gerade daran ein PS Script zu erstellen, welches ein komplettes Netzwerk ausliest, um Informationen zum Serverstand gibt (Updates aktuell, Service Pack, OS Version, Lizenzen, Hyper-V Status etc.).
Des Weiteren wäre es sehr gut, auch Informationen von installierten Programmen zu bekommen (Version, Updates, Benachrichtigungen etc.)

Primär geht es darum, sich auf den jeweiligen Server zu verbinden und so eine direkte Übersicht über die Zustände zu bekommen.

Kurze Info: Ein Monitoring (PRTG) ist jeweils schon Komplett eingerichtet, sprich eine Überwachung besteht ja schon, BackupSysteme (ArcServe) laufen schon, Sicherungen für die Switche laufen schon. Mit der Info will ich nur mitteilen, das es an sich nicht um die direkten Überwachungen geht. Es geht beispielsweise um Kunden, die keinen Wartungsvertrag haben, wo sowieso schon überwacht wird, um den Kunden dann mit diesen Informationen aufzuzeigen, dass es noch was zutun gibt.

Wenn noch Infos gebraucht werden, gerne.

Ich hoffe es kann jemand helfen ;)

Gruß
getroffen

Content-Key: 249343

Url: https://administrator.de/contentid/249343

Printed on: April 25, 2024 at 19:04 o'clock

Member: colinardo
colinardo Sep 16, 2014 updated at 14:07:01 (UTC)
Goto Top
Moin,
Powershell Skripten, Netzwerk auslesen
lässt sich an deine Bedürfnisse anpassen...
@AnkhMorpork hatte dazu auch schon mal was gepostet: Systemdaten auslesen mit Powershell

Grüße Uwe
Member: jsysde
jsysde Sep 16, 2014 at 14:05:51 (UTC)
Goto Top
Moin.

Über wieviele Server reden wir denn und welche OS kommen zum Einsatz?

Cheers,
jsysde
Member: geTr0ffEn
geTr0ffEn Sep 16, 2014 at 14:09:04 (UTC)
Goto Top
Hi Uwe,

ja, hab ich mir schon intensiv angeschaut. Ich muss leider gestehen, dass ich bisher noch nie wirklich mit der PS zutun hatte.

Kannst du irgendwie weiterhelfen?
Gruß
Member: geTr0ffEn
geTr0ffEn Sep 16, 2014 updated at 14:27:06 (UTC)
Goto Top
Hi jsysde,

also, es geht um Server 2003er, 2003er R2, 2008, 2008 R2, 12, 12 R2.
Menge Server: ca. 10Server pro Standort

Aber genau deswegen brauch ich ja so was zum auslesen, dass ich genau diese Infos direkt bekomme, wenn ich, in Absprache mit dem Kunden, auf den Server komme.

Wichtig fürs erste, ist vielleicht erst mal ein ganz kleines Script zu haben, welches mir das OS ausliest. Weiteres kann ja angepasst werden.
Wie sieht es denn mit Drittanbietersoftware aus? Beispielsweise um die Version von einem Backup Programm auszulesen (ArcServe oder Symantec Backup Exec)

Gruß
getroffen
Member: colinardo
colinardo Sep 16, 2014 updated at 14:38:57 (UTC)
Goto Top
Zitat von @geTr0ffEn:
Ich muss leider gestehen, dass ich bisher noch nie wirklich mit der PS zutun hatte.
Kannst du irgendwie weiterhelfen?
klar, na dann erst mal ab ins Klassenzimmer - arbeite dich hier erst mal durch die Grundlagen der Powershell:
Powershell Arrays deklarieren füllen abfragen ???

dann sehen wir weiter.
Member: geTr0ffEn
geTr0ffEn Sep 16, 2014 at 14:40:39 (UTC)
Goto Top
Frage:

wenn ich das Script in PowerShell als Admin starte, bleibt es hängen.

Lasse ich es ohne Admin in der PowerShell laufen funktioniert es


Gruß
Member: Gahmuret
Gahmuret Sep 16, 2014 at 15:14:09 (UTC)
Goto Top
Hi. Du benötigst dafür Arrays, WMI (Get-WMIObject) und die WMI-Klassen Win32_Product bzw. Win32_OperatingSystem.

Ich habe leider keine Erfahrung mit PS auf 2003 Servern, aber da gab es was mit Versionsunterschieden. Kann sein, dass ein Script, welches auf 2008/2012 läuft dort evtl nicht startet.

Da du remote etwas ausführst, fragst du Anmeldeinformationen ab?

Grüße
Gahmuret
Member: geTr0ffEn
geTr0ffEn Sep 16, 2014 at 15:27:00 (UTC)
Goto Top
Hi,

danke erst mal,

nein, Remote nicht, findet lokal auf der Maschine statt.

Gruß
Member: colinardo
colinardo Sep 16, 2014 updated at 15:44:39 (UTC)
Goto Top
User Credentials können für lokale WMI-Abfragen nicht verwendet werden.

Außerdem solltest du natürlich sicherstellen das die ExecutionPolicy richtig konfiguriert ist.

Die Credentials die das Script für die Remote-Abfrage benötigt fragt das Script ja ab.
Member: geTr0ffEn
geTr0ffEn Sep 16, 2014 updated at 17:43:48 (UTC)
Goto Top
Hi,

wo muss ich die ExecutionPolicy ausführen? vorher autonom oder in deinem Beispiel einfügen?

wenns lokal auf dem host ist, benötigt der user eigentlich keine zusätzliche gruppe, nur die fw muss evtl. angepasst werden
Member: jsysde
jsysde Sep 16, 2014 at 17:51:23 (UTC)
Goto Top
N'Abend.
Zitat von @geTr0ffEn:
also, es geht um Server 2003er, 2003er R2, 2008, 2008 R2, 12, 12 R2.
Dann mal Obacht, die WMI-Klassen unterscheiden sich da mitunter (spontan fällt mir QFE unter 2008 aufwärts ein etc.).
Also je nach Server-OS muss liefert die gleiche WMI-Abfrage, um bei dem Beispiel zu bleiben, nach installierten Hotfixes unterschiedliche/unvollständige Ergebnisse bzw. müssen weitere/andere WMI-Anfragen ausgeführt werden.

Menge Server: ca. 10Server pro Standort
Da sollte eine skriptgesteuerte Abfrage vertretbar sein - nicht vergessen, WMI-Abfragen (und andere natürlich auch) verbrauchen Ressourcen auf den Systemen, bei mehreren hundert Servern im Netz kann das schon mal unschön werden.

Cheers,
jsysde
Member: geTr0ffEn
geTr0ffEn Sep 16, 2014, updated at Sep 17, 2014 at 06:39:33 (UTC)
Goto Top
Dann mal Obacht, die WMI-Klassen unterscheiden sich da mitunter (spontan fällt mir QFE unter 2008 aufwärts ein etc.).
Also je nach Server-OS muss liefert die gleiche WMI-Abfrage, um bei dem Beispiel zu bleiben, nach installierten Hotfixes
unterschiedliche/unvollständige Ergebnisse bzw. müssen weitere/andere WMI-Anfragen ausgeführt werden.

Da sollte eine skriptgesteuerte Abfrage vertretbar sein - nicht vergessen, WMI-Abfragen (und andere natürlich auch)
verbrauchen Ressourcen auf den Systemen, bei mehreren hundert Servern im Netz kann das schon mal unschön werden.


das script kann auch immer erst am selben oder paar tage vorher laufen, beispielsweise auch manuell angestoßen,

von daher brauch man auf die belastung des traffic nicht so viel gewicht legen.

Wir reden ja gerade hier nur über Windows. Weß jemand ob ich Informationen so auch von anderer Software sammeln kann? Wie erwähnt für ArcServer, Symantec, HP Tools etc.
Member: AnkhMorpork
AnkhMorpork Sep 17, 2014 at 07:52:03 (UTC)
Goto Top
Zitat von @colinardo:
@AnkhMorpork hatte dazu auch schon mal was gepostet:
Systemdaten auslesen mit Powershell

Falls du mein Script nutzen willst, bitte remote so starten:
$Session = New-PSSession -Computername <CompiName> -Credential <DomainName\AdminName>
$ServiceList = Invoke-Command -Session $Session -Filepath "ScriptName.ps1"

So, wie von mir beschrieben geht's nicht ... hatte ich seinerzeit übersehen.

Gruß

ANKH
Member: geTr0ffEn
geTr0ffEn Sep 17, 2014 updated at 11:32:50 (UTC)
Goto Top
Hi,

erst mal vielen Dank an alle, ich hatte zusätzlich noch Fragen gestellt:

Wir reden ja gerade hier nur über Windows. Weiß jemand/Hat jemand Erfahrungen ob ich Informationen so auch von anderer Software sammeln kann? Wie erwähnt für ArcServe, Symantec, HP Tools etc.

Ich habe jetzt das Script von Uwe, wie und wo passe ich es meiner Umgebung an, kann jemand helfen?
Es würde ja erst mal genügen, wenn das Script nur mal die Windows Version widergibt und in dem Excel Sheet auflistet.

Gruß
Member: colinardo
colinardo Sep 17, 2014 updated at 11:54:27 (UTC)
Goto Top
Zitat von @geTr0ffEn:
Ich habe jetzt das Script von Uwe
Zur Info: Das ist nicht mein Script, sondern von diesem Herrn http://www.powershellpro.com/why-i-no-longer-hate-writing-documentation ... !

Wir reden ja gerade hier nur über Windows. Weiß jemand/Hat jemand Erfahrungen ob ich Informationen so auch von anderer Software sammeln kann? Wie erwähnt für ArcServe, Symantec, HP Tools etc.
Wenn die deine benötigten Infos in der Registry ablegen, ja.

Es würde ja erst mal genügen, wenn das Script nur mal die Windows Version widergibt und in dem Excel Sheet auflistet.
das macht es bereits
Member: geTr0ffEn
geTr0ffEn Sep 17, 2014 updated at 13:15:12 (UTC)
Goto Top
Zur Info: Das ist nicht mein Script, sondern von diesem Herrn
http://www.powershellpro.com/why-i-no-longer-hate-writing-documentation ... !

das ist mir schon klar. Wir müssen jetzt nicht wieder wegen so was anfangen zu diskutieren, ich denke du erinnerst dich. Ich konzentriere mich immer aufs Thema, sollte nur als Beispiel dienen. Abgehakt.

> Wir reden ja gerade hier nur über Windows. Weiß jemand/Hat jemand Erfahrungen ob ich Informationen so auch von
anderer Software sammeln kann? Wie erwähnt für ArcServe, Symantec, HP Tools etc.
Wenn die deine benötigten Infos in der Registry ablegen, ja.

Ist so was möglich? Bitte auch ein kurzes wie...
das macht es bereits

wenn ich es in der PS starte, bekomme ich in der Excel nur fette Überschriften face-sad

Gruß
Member: colinardo
colinardo Sep 17, 2014 updated at 14:01:08 (UTC)
Goto Top
Ich konzentriere mich immer aufs Thema
ich auch, wollte nur klarstellen, das das Script nicht auf meinem Bockmist aufgebaut ist ...
Zitat von @geTr0ffEn:
Ist so was möglich? Bitte auch ein kurzes wie...
ohne aktiviertes PSRemoting auf den jeweiligen Servern z.B. mit reg query
req query "\\SERVERXYZ\HKLM\Software\HP\SoftwareXYZ" /v Version
wenn ich es in der PS starte, bekomme ich in der Excel nur fette Überschriften face-sad
läuft hier problemlos. Wir kennen hier deine Umgebung nicht und welche Rechner/Server-OS-Versionen du abfragst.
Member: geTr0ffEn
geTr0ffEn Sep 17, 2014 at 14:10:19 (UTC)
Goto Top
bin in einer Domäne,

habe Win 7 Enterprise aufgesattelt.
Member: colinardo
colinardo Sep 17, 2014 updated at 14:15:45 (UTC)
Goto Top
und wie sieht's mit den abzufragenden Servern aus, OS technisch ? Firewall technisch ? Berechtigungen ?
Member: geTr0ffEn
geTr0ffEn Sep 17, 2014 at 14:27:23 (UTC)
Goto Top
es läuft lokal auf jeder Maschine,

OS: 2003, 2008 2012
Member: colinardo
colinardo Sep 17, 2014 updated at 14:29:41 (UTC)
Goto Top
Zitat von @geTr0ffEn:
es läuft lokal auf jeder Maschine,
OS: 2003, 2008 2012
Das Script ist dafür angelegt PCs remote abzufragen nicht jeweils lokal !
Member: geTr0ffEn
geTr0ffEn Sep 18, 2014 at 06:44:52 (UTC)
Goto Top
ok,

dann bitte nochmal die Frage richtig lesen. Das mit dem "lokal" habe ich auch mehrfach angesprochen hier.

"Primär geht es darum, sich auf den jeweiligen Server zu verbinden und so eine direkte Übersicht über die Zustände zu bekommen."

Außerdem habe ich auch geschrieben, es ich sag mal so einfach wie möglich zu machen:

Lokal und erst mal nur einen Einzigen Wert mal in einer Excel widerzugeben. Da kann man dann drauf aufbauen. Ich benötige keinen um meine Arbeit zu machen. Ich frage nach ein wenig Unterstützung.

Gruß
Member: colinardo
colinardo Sep 18, 2014 updated at 07:49:06 (UTC)
Goto Top
Zitat von @geTr0ffEn:
dann bitte nochmal die Frage richtig lesen. Das mit dem "lokal" habe ich auch mehrfach angesprochen hier.

Ich Zitiere mal aus deiner Frage:
welches ein komplettes Netzwerk ausliest
wer soll daraus schließen das du die Scripte jeweils lokal auf dem Server ausführen willst ?. Normalweise macht man sowas ja remote, da weniger Aufwand face-wink Na egal.

Lokal und erst mal nur einen Einzigen Wert mal in einer Excel widerzugeben. Da kann man dann drauf aufbauen. Ich benötige keinen um meine Arbeit zu machen. Ich frage nach ein wenig Unterstützung.

Bitteschön, na dann viel Erfolg:
# OS via WMI auslesen 
$os = (gwmi Win32_OperatingSystem).Caption

# Excel Objekt erzeugen
$objXL = New-Object -ComObject "Excel.Application"  

# Excel anzeigen
$objXL.Visible = $true

# neues Excel Dokument erzeugen
$objDoc = $objXL.Workbooks.Add()

# Die Daten befinden sich in Tabelle1
$sheet = $objDoc.Worksheets.Item(1)

#Zelle A1 mit dem ausgelesenen OS füllen
$sheet.Range("A1").Value2 = $os  
Grüße Uwe