none
Freier Festplattenspeicher aller DCs anzeigen lassen RRS feed

  • Frage

  • Guten Tag,

    ich habe mir ein kleines Script gebaut, um auf allen in der Domäne vorhandenen DC's den freien Festplattenspeicher auf Laufwerk C: anzeigen zu lassen, allerdings ist mein Wissen bezüglich Arrays nicht nenneswert, weshalb die Übergabe der ausgelesenen Daten aus dem AD nicht korrekt funktioniert.

    $DCname = (Get-ADComputer -Filter {Name -Like "*"} -SearchBase "OU=Domain Controllers,DC=MyDomain,DC=local" | select Name)
    Get-WmiObject win32_logicaldisk -Computer $DCname -Filter "name='C:'" | %{$DCname + ": " + [math]::truncate($_.freespace / 1GB) + " GB"} > C:\Temp\log.txt
    Write-Host (Get-content C:\Temp\log.txt)
    Bitte um Unterstützung.

    Mittwoch, 1. März 2017 15:16

Antworten

Alle Antworten

  • Moin,

    die erste Zeile gibt Dir kein Array von Strings zurück, sondern ein Array von AD-Computer-Objekten, die allerdings nur die Property "Name" haben. Das bekämest Du aber mit

    (Get-ADDomainController).Name

    Die zweite Zeile beinhaltet eine foreach-Schleife ohne explizite Schleifenvariable. Um auf diese zuzugreifen, brauchst Du statt $DCName (was ja ein Array ist) die Variable $_ , die Du ja auch benutzt, bei FreeSpace, und davon die Property PSComputerName.

    Und eine Datei wegzuschreiben, nur um dann den Inhalt an die Konsole auszugeben, ist evtl. nicht optimal ;-)


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> http://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com

    Mittwoch, 1. März 2017 15:39
  • Mit Get-ADDomainController kann ich die Suchkriterien allerdings nicht auf andere Server anhand des AD umstellen, was mich zu dieser Schreibweise veranlasst hatte. Flexibel -SearchBase ändern zu können und somit z.B. alle BackupServer gleichzeitig zu filtern, halte ich für eine sinnvolle Umsetzung. Ist es möglich, das Script dahingehend lauffähig zu bekommen?

    Zeile 1 alleine für sich gibt mir die richtigen Daten aus

    Zeile 2 alleine gibt die gewünschten Informationen aus C: zurück

    Der Export in eine Datei und das anschließende Auslesen war nur zu Testzwecken gedacht und funktioniert ebenfalls.

    Kannst Du mir bitte bei der Umstellung des Scripts helfen, ich bin da mit meinem Wissen über Powershell relativ am Ende und diese Lösung wäre wirklich eine große Hilfe.

    Wahrscheinlich hast Du mir die Lösung oben schon genannt, aber ich weiß es nicht korrekt anzuwenden.

    Vielen Dank

    Mittwoch, 1. März 2017 16:04
  • $DCname = (Get-ADComputer -Filter {Name -Like "*"} -SearchBase "OU=Domain Controllers,DC=CXLAB,DC=it-pro-berlin,DC=de").Name
    Get-WmiObject win32_logicaldisk -Computer $DCname -Filter "name='C:'" | foreach {$_.PSComputerName + ": " + [math]::truncate($_.freespace / 1GB) + " GB" | Out-File "c:\temp\output.txt" -Append}


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> http://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com

    • Als Antwort markiert Grunch83 Mittwoch, 1. März 2017 16:39
    Mittwoch, 1. März 2017 16:27
  • Funktioniert einwandfrei.

    Vielen Dank für die Hilfe :)

    Mittwoch, 1. März 2017 16:40