Jump to content

BOfH_666

Expert Member
  • Gesamte Inhalte

    2.091
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von BOfH_666

  1. Ich würde auch eher VSCode empfehlen, auch weil Du, wenn Du eventuell mal mit Powershell 7 weitermachen willst, dann sowieso umsteigen müsstest. Wie wär's, wollen wir zusammen Deine Aufgabe mal in seine Einzelheiten zerlegen und so Dein Script eventuell ein bissl professioneller gestallten? Ich hab nicht wirklich alles verstanden, aber vielleicht fangen wir mit dem an, was ich verstanden habe. Wenn's um die Verbindung von physischem und logischem Laufwerk und Partition und Gerät und so weiter geht, mach ich mir auch jedesmal n' Knoten ins Hirn. Besonders, wenn's dann auch noch mit WMI losgeht. Die modernere Variante von WMI ist CIM - ist in der Beziehung aber auch nicht wirklich einfacher. Aber es gibt ja 's Internet. Dieser folgende Schnipsel besorgt uns schon mal die angeschlossenen USB-Datenträger mit Laufwerksbuchstaben, Beschreibung, Name und PNPDeviceID: Get-CimInstance -ClassName Win32_DiskDrive -Filter 'InterfaceType = "USB"' | ForEach-Object { $RAW = $_ Get-CimAssociatedInstance -ResultClassName Win32_DiskPartition -InputObject $_ | Get-CimAssociatedInstance -ResultClassName Win32_LogicalDisk | Select-Object -Property DeviceID, Description, VolumeName, @{Name = 'PNPDeviceID'; Expression = { $RAW.PNPDeviceID } } } So. jetzt bist Du wieder dran. Was willst Du damit machen?
  2. Ja ... aber wäre das nich supi, wenn so eine GPO eine einzelne Systemeinstellung wäre, die das eben für's ganze System regelt .... das meinte ich. Aber immer noch besser so, als irgendwelche einzelne INI- oder CFG-Dateien oder Registry-Hacks oder sowas.
  3. OK, Danke. Das bestätigt meine Erfahrung, dass es da leider keine systemweite Stelle gibt, wo man das konfigurieren kann .... hätt' ja doch sein können. ... is fast so schlimm, wie Standard-Browser setzen.
  4. Jaaaa ... das weiß ich doch alles schon ... wir benutzen ja ein PAC-File. Aber wir liefern es eben mit WPAD aus. Und da interessierte mich, wie Du die URL zum PAC auf den Clients konfigurierst. Bei Dir vermute ich als GPOs, richtig? Welche?
  5. Ich meinte eigentlich nicht, welche Möglichkeiten es gibt, sondern wie es bei dem einen oder anderen (oder dem oder anderen Kunden) in der Praxis gelebt wird.
  6. Und wie verteilst Du diese PAC normalerweise? (Ich hoffe, das kommt jetzt nicht irgendwie beleidigt oder schnippisch rüber ... ist ernst gemeint)
  7. Ich würde mal vermuten, dass fast niemand hier in so einem Forum, wirklich Erfahrung mit allen unterschiedlichen Platten haben kann. Auch wenn vermutlich jeder eine Meinung dazu hat, dürfte ein unabhängiger Tester vielleicht die bessere Quelle für Informationen sein. Die Redakteure der c't testen des Öfteren auch Festplatten und veröffentlichen diese Testergebnisse regelmäßig als "Plattenkarussel". Ich empfehle Dir, den letzten mit diesem Namen erschienen Artikel zu kaufen - ja, die kann man nachträglich einzeln kaufen - dann hast Du einen guten Überblick und findest vielleicht sogar noch eine bessere Option als bei diesem Händler, der evtl. (ich möchte niemandem etwas unterstellen) ein deutliches Eigeninteresse beim Verkauf dieser Platten hat.
  8. ... irgendwas is ja immer ...
  9. Wenn ich die Frage jetzt nicht falsch verstanden habe, brauchst Du auf den Clients überhaupt nix konfigurieren. Ein aktueller Windows-PC sucht sich die nötigen Einstellungen per WPAD. Du hinterlegst die nötigen Informationen in einem Script, welches Du auf einem Webserver verfügbar machst und zeigst mittels DNS darauf. So kannst Du jederzeit falls nötig die Einstellungen anpassen, ohne jedes mal wieder die Clients anzupassen.
  10. Jetzt werde ich aber doch unsicher. Siehst Du eigentlich meine Beiträge, oder werden die irgendwie geblockt?
  11. Sagst Du uns vielleicht trotzdem noch, warum es unbedingt WSH sein soll? Ich würde es gern verstehen.
  12. Ich bin neugierig - warum soll es denn unbedingt WSH sein, wenn ich fragen darf?
  13. Wenn man weder Kosten noch Mühen scheut, geht alles. Du könntest z.B. im Hintergrund einen Prozess laufen lassen, der auf Outlook zugreift und die von Dir gewünschten Bedingungen prüft und wenn diese erfüllt sind, die von Dir gewünschte Aktion starten. Outlook selbst, kann meines Wissens nur auf Outlook-interne "Resourcen" zugreifen.
  14. Wenn ich Dich richtig verstanden habe - mit eingebauten Mitteln soviel ich weiß nicht, nein.
  15. Bitte nicht immer wieder alles komplett zitieren! Was funktioniert nicht, welche Variablen sind leer? Bitte im Hinterkopf behalten: Wir können Deinen Bildschirm nicht sehen und auch Deine Gedanken (leider) nicht lesen.
  16. Noch ne Kleinigkeit: Wenn Du hier im Forum antwortest, musst Du nicht immer den kompletten Vor-Beitrag zitieren. Lösch doch bitte einfach alles aus dem Zitat raus, was nicht nötig ist ... im Zweifel das gesamte Zitat. Das macht Deine Antworten leichter lesbar. Danke schon mal.
  17. Hmmmm ... ich bin jetzt auch nicht der XML-Profi ... vielleicht kommt hier noch ein anderer Kollege und kann das lösen ... ich schau mir das später nochmal an .... Edit: Ich weiß schon, warum ich immer Kopfschmerzen kriege, wenn ich mich mit XML beschäftigen muss ... das ist einfach nicht Admin-Hirne gemacht ... ... aber wenn man dann erstmal wieder weiß, wie's geht, geht's wieder ne Weile. [XML]$a = get-content c:/hosts.xml $a.hosts.valueservers.valueserver.host $IPListe = $a.hosts.valueservers.valueserver.host.GetEnumerator().address foreach ($IP in $IPListe) { if (Test-Connection -ComputerName $IP -Count 1 -Quiet) { Write-Verbose "Information of $IP" $CS = Get-WmiObject -Class Win32_ComputerSystem -ComputerName $IP $IP = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE –ComputerName $IP $OS = Get-WmiObject -Class win32_Operatingsystem -ComputerName $IP $Mon = Get-WmiObject -Class wmimonitorid -ComputerName $IP -Namespace root\wmi | ForEach-Object { ($_.SerialnumberID | foreach-object { [char]$_ }) -join '' } $BIOS = Get-WmiObject -Class Win32_BIOS -ComputerName $IP $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $IP) $regkey = $reg.OpenSubkey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall") $prog = foreach ($SubKeyName in $regkey.GetSubKeyNames()) { $SubKey = $reg.OpenSubkey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$SubKeyName") $SubKey.GetValue("DisplayName") } [PSCustomObject]@{ ComputerName = $Cs.Name Model = $CS.Model SerialNumber = $BIOS.SerialNumber "Monitor Serial" = $Mon "OS Version" = $OS.caption "OS 32/64bit" = $OS.Osarchitecture IPAddress = $IP.IPAddress Gateway = $IP.DefaultGateway "NWcard index" = $IP.Index Framework = $prog } } } Ich weiß ja nicht, warum Du die ganzen UnInstall-Keys aus der Registry auslesen möchtest, aber es könnte sein, dass da deutlich mehr ausgelesen wird als Du erwartest. Auf einem normalen System kommt da gern mal Einiges zusammen. Und Du liest im Zweifel nur den 64- oder 32-bit-Schlüssel aus - je nach Zielsystem. Na dann probier mal, ob das so läuft. Und Ubrigens: Was benutzt Du als Code-Editor? Meine DRINGENDE Empfehlung wäre, VSCode und die ganzen Hilfen zu benutzen, die VSCode mitbringt. Das würde die Qualität und Lesbarkeit Deines Codes deutlich verbessern, denke ich.
  18. Du versuchst die XML mit dem Pfad c:/hosts.xml einzulesen ... funktioniert das? Ich würde nur zur Sicherheit einen Backslash benutzen. Und Deine XML ist falsch. Die Werte müssen in den Tags stehen, nicht in den Namen/Beschreibungen ... ich hab das mal angepasst und hier angehängt. Dann sollte es auch $PC sein und nicht $PC.Address. ... 'kannst Du dann so überprüfen ... foreach ($pc in $a.hosts.valueservers.valueserver.host){ "Adresse: '$($pc)'" } hosts.xml
  19. Was für eine ketzerische Frage .... !!! .... das ist keine Mühe, das ist ein Vergnügen!!! Was jetzt? Magst Du uns die XML zeigen oder stellst Du auf CSV um oder noch ganz was anderes? Du kannst die Registry auch remote abfragen. Dafür musst Du dann aber Invoke-Command benutzen, weil Get-ItemProperty selbst nicht remoting-fähig ist.
  20. Ich leiste mir den Luxus Windows 7 und Powershell vor Version 5.1 nicht mehr zu supporten. Ohne Deine XML-Datei zu sehen, können wir dazu schwerlich was Intelligentes beitragen. Eine CSV-Datei wäre aber vermutlich deutlich einfacher zu handhaben. Diese Zeile fragt den lokalen PC ab, auf dem das Script läuft ... und das wieder und wieder bei jedem Schleifendurchlauf.
  21. Ach Gottchen .... Du Ärmster ... ich werde Dich in meine Abend-Gebete einschließen.
  22. Ich hätt' ja wieder einfach ein Upgrade auf Windows 10 empfohlen. Da ist die 5.1 sowieso schon mit dabei. Alles andere verlängert doch nur das Leiden. Hat einer von Euch noch Kunden, die wirklich noch Windows 8.1 im Einsatz haben?
  23. Die solltest Du aber DRINGENDS in Rente schicken. Du hast also noch Windows 7 im Einsatz. Das solltest Du auch DRINGENDS in Rente schicken. Auf den Clients, die Du per WMI/CIM abfragen möchtest, muss übrigens nicht unbedingt eine aktuelle Powershell laufen. Die Abfragen laufen ja eben über WMI/CIM und nicht über Powershell.
  24. Hmmm ... ich kann mich natürlich auch irren (ich tue das ziemlich häufig), aber ist es für einen Anfänger nicht erstmal einfacher, die Befehle "ganz normal" - also sequenziell abzuarbeiten? ... zumal für Foreach-Object -Parallel auch Powershell 7 nötig ist, was noch nicht jeder nutzt. ... und hier würd ich auch eher ein Export-Csv empfehlen. Wenn's schon mal strukturierte Daten sind ....
  25. Hallo la-kro, Willkommen im MCSE-Board. Ich habe Dir mal ein Gerüst gebaut und 2 Deiner Abfragen integriert. Die restlichen kannst Du Dir - analog zu den beiden die Du unten siehst - allein einbauen. (Wenn nicht - einfach wieder melden! ) $pcs = Get-Content C:\pc.txt foreach ($ComputerName in $pcs) { if (Test-Connection -ComputerName $ComputerName -Count 1 -Quiet) { $CimSession = New-CimSession -ComputerName $ComputerName $CS = Get-CimInstance -ClassName Win32_ComputerSystem -CimSession $CimSession $BIOS = Get-CimInstance -ClassName Win32_BIOS -CimSession $CimSession [PSCustomObject]@{ ComputerName = $ComputerName Model = $CS.Model SerialNumber = $BIOS.SerialNumber } } }
×
×
  • Neu erstellen...