Filter
Exclude
Time range
-
Near
Programmieren (Skripten) mit KI Teil 2 Ich hatte ja neulich ein total verunglücktes Beispiel präsentiert. Hier nun ein weiteres, diesmal mit Googles Genimi, welches wesentlich besser lief. Problem war - ich wollte rausfinden, auf welchen von und 100 Servern eine bestimmte VHDX gemountet ist. Ich kann da entweder jeden Server einzeln öffnen und nachschauen aber meine exorbitante Faulheit steht dem entgegen oder ich schicke einen AZUBI drüber aber der wird mich dafür nicht mögen. Außerdem muß ich da immer wieder mal nachschauen. Also folgender mehrstufiger Prompt: Schreib mir ein powershell script das alle windows server die mit "AVD-M" im Namenbeginnen abfragt und die verbundenenfestplattennamen pro server in eine csv datei schreibt. Output kann ich leider nicht posten, denn es sind zu viele Cashtags drin, die X nicht akzeptiert. Aber schonmal nicht schlecht, gar nicht schlecht aber ich sehe, get-ciminstance alleine wird nicht zum Ziel führen, also: Verwende zusätzlich zum get-ciminstancebefehl auch diese befehle um es abzurufen. Output schon fast perfekt aber ich konkretisiere: Frage im script bitte alle server mit den Namen AVD-W11-M-0 -99 ab und verzichte auf eine AD-Abfrage. # Definiert den Pfad für die Ausgabe-CSV-Datei $outputPath = "C:\temp\ServerFestplatten.csv" # Erstellt eine Liste von Servernamen von AVD-W11-M-0 bis AVD-W11-M-99 $serverList = 0..37 | ForEach-Object { "AVD-W11-M-$_ " } # Erstellt ein leeres Array, um die Ergebnisse zu speichern $report = @() # Durchläuft jeden Server in der definierten Liste foreach ($serverName in $serverList) { $cimSession = $null Write-Verbose "Frage Festplatten für Server ab: $serverName" # Prüft, ob der Server erreichbar ist if (-not (Test-Connection -ComputerName $serverName -Count 1 -Quiet)) { Write-Warning "Server $serverName ist nicht erreichbar. " $report = [PSCustomObject]@{ 'Server' = $serverName 'Festplattenmodell' = 'Nicht erreichbar' 'Anzahl Partitionen' = 'N/A' 'Volumebezeichnungen' = 'N/A' } continue } try { # Erstellt eine CIM-Sitzung für effiziente Remote-Befehle $cimSession = New-CimSession -ComputerName $serverName -ErrorAction Stop # Ruft alle Festplatten auf dem Remote-Server ab $disks = Get-Disk -CimSession $cimSession if ($null -eq $disks) { $report = [PSCustomObject]@{ 'Server' = $serverName 'Festplattenmodell' = 'Keine Festplatten gefunden' 'Anzahl Partitionen' = 0 } 'Volumebezeichnungen' '' = continue } # Durchläuft jede Festplatte foreach ($disk in $disks) { # Ruft die zugehörigen Partitionen und Volumes ab, um die Bezeichnungen zu ex $volumeLabels = $disk | Get-Partition -CimSession $cimSession | Get-Volume -C $volumeLabelsString = $volumeLabels -join ' ' , $object = [PSCustomObject]@{ 'Server' 'Festplattenmodell' 'Anzahl Partitionen' 'Volumebezeichnungen' = $serverName = $disk.Model = $disk.NumberOfPartitions = $volumeLabelsString } $report = $object } } catch { Write-Warning "Fehler beim Abrufen der Festplatteninformationen von $serverName. $report = [PSCustomObject]@{ 'Server' = $serverName 'Festplattenmodell' = "Fehler bei der Abfrage" 'Anzahl Partitionen' = 'N/A' 'Volumebezeichnungen' = 'N/A' } } finally { # Bereinigt die CIM-Sitzung if ($cimSession) { Remove-CimSession -CimSession $cimSession } } } # Exportiert den Bericht in eine CSV-Datei if ($report.Count -gt 0) { $report | Export-Csv -Path $outputPath -NoTypeInformation -Encoding UTF8 Write-Host "Bericht wurde erfolgreich nach $outputPath exportiert. " } else { Write-Host "Keine Server zur Verarbeitung gefunden. " } Wow 😳 perfekt - ein überzeugendes Ergebnis. Das Script läuft einwandfrei uns es kommt eine wunderschöne CSV mit genau den Infos, die ich wollte. Hätte ich das, daß Array komplett selbst programmieren müssen, wäre ich lange, viele Stunden dran gesessen. So war das ein Job von nichtmal 10 Minuten. Aber: Ohne Kenntnisse in PowerShell-Scripting geht es nicht. Man muß die KI kontrollieren und den Output bewerten und korrigieren können. Wenn das jedoch gegeben ist, ist der Produktiovitätsgewinn enorm.
6
2
52
2,005