Hardwaredaten Remote auslesen Thema ist als GELÖST markiert

kleine praktische Skripte die den Arbeitsalltag erleichtern.
Benutzeravatar
Ulrich Wiedholz
Beiträge: 282
Registriert: Samstag 10. Dezember 2011, 17:19
Kontaktdaten:

Hardwaredaten Remote auslesen

Ungelesener Beitrag von Ulrich Wiedholz »

Zeit das Inventarprogramm abzugleichen oder mit neuen Daten zu füttern?

Hier ein Skript mit einer Funktion, die das notwendige enthält.
Wie immer als Anregung gedacht um das Skript an die eigenen Bedürfnisse anzupassen...

Code: Alles auswählen

<#
.Synopsis
   Liest die nötigen Computerinformationen aus Rechner aus um diesen im Inventar korrekt erfassen zu können.
.DESCRIPTION
   Die Computerinformationen werden vom Rechner geholt und zusammengefasst ausgegeben.
   Dies gibt uns die Möglichkeit die Daten für das Inventar zu sammeln oder diese mit den bestehenden Daten aus der Inventardatenbank abzugleichen.
   Sind auf dem Zielsystem oder den Zielsystemen andere Anmeldeinformationen erforderlich, so ist der Parameter Anmeldeinformationen auszuwählen.
.EXAMPLE
   Der Aufruf kann mit oder ohne Anmeldeinformationen erfolgen, im Beispiel wird nur ein Computer ausgewertet.
   Get-Hardwaredaten Computer0815
   Get-Hardwaredaten Computer0815 -Anmeldeinformationen
   Get-Hardwaredaten -ComputerName Computer0815
   Get-Hardwaredaten -ComputerName Computer0815 -Anmeldeinformationen
.EXAMPLE
   Der Aufruf kann mit oder ohne Anmeldeinformationen erfolgen, im Beispiel wird ein ganzes Array von Computern ausgewertet.
   Get-Hardwaredaten (Get-ADComputer -Filter *).Name
   Get-Hardwaredaten (Get-ADComputer -Filter *).Name -Anmeldeinformationen
   Get-Hardwaredaten -ComputerName (Get-ADComputer -Filter *).Name
   Get-Hardwaredaten -ComputerName (Get-ADComputer -Filter *).Name -Anmeldeinformationen
#>
function Get-Hardwaredaten
{
    [CmdletBinding()]
    [Alias()]
    [OutputType([int])]
    Param
    (
        # Computername der geprüft werden soll oder ein Array aus Computernamen.
        [Parameter(Mandatory=$true,
                   ValueFromPipelineByPropertyName=$true,
                   Position=0)]
        [string[]]
        $ComputerName,
        # Werden andere Anmeldeinformationen für den Computer benötigt?
        [switch]
        $Anmeldeinformationen
    )

    Begin
    {
    Clear-Host

    $skript =  {
    $computerinfo = Get-ComputerInfo -Property *
    $computerCPU = Get-CimInstance CIM_Processor
    $computerHDD = Get-CimInstance Win32_LogicalDisk -Filter "DriveType = '3'"
    $computerNET = Get-NetAdapter -Physical | where {$_.Status -eq "Up"}

    Write-Host "Auswertung der Hardwaredaten" -BackgroundColor Blue
    "Computer: " + $computerinfo.CsDNSHostName
    "Benutzer: " + $computerinfo.CsUserName
    "Hersteller: " + $computerinfo.CsManufacturer
    "Modell: " + $computerinfo.CsModel
    "Seriennummer: " + $computerinfo.BiosSeralNumber
    
    " - Software - "
    "Letzter Start: " + $computerinfo.OsLastBootUpTime
    "System: " + $computerinfo.CsSystemType + ", installiert ist: " + $computerinfo.OsArchitecture
    "Sprache: " + $computerinfo.OsLocale + ", Systemsprache: " + $computerinfo.OsLanguage
    "Betriebssystem: " + $computerinfo.WindowsProductName + ", Version: " + $computerinfo.OsHardwareAbstractionLayer + ", installiert am: " + $computerinfo.OsInstallDate.ToString()
    "BIOS Version: " + $computerinfo.BiosSMBIOSBIOSVersion
    "TeamViewer ID: " + (Get-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\TeamViewer" -Name ClientID).ClientID
    
    " - Hardware - "
    "CPU: " + $computerCPU.Name
    "RAM: " + "{0:N2}" -f ($computerinfo.OsFreePhysicalMemory/1MB) + " GB / {0:N2}" -f ($computerinfo.CsPhyicallyInstalledMemory/1MB) + " GB Frei - Prozentual noch {0:P2}" -f ($computerinfo.OsFreePhysicalMemory/$computerinfo.CsPhyicallyInstalledMemory) + " Frei"
    foreach($HDD in $computerHDD) {"HDD " + $HDD.DeviceID + " {0:N2}" -f ($HDD.FreeSpace/1GB) + " GB / {0:N2}" -f ($HDD.Size/1GB) + " GB Frei - Prozentual noch {0:P2}" -f ($HDD.FreeSpace/$HDD.Size) + " Frei"}
    foreach($NET in $computerNet) {
    $IP = $NET | Get-NetIPAddress
    $NET.LinkSpeed + " Netzwerk: " + $NET.InterfaceDescription + ", MAC-Adresse: " + $Net.MacAddress + ", IP-Adresse(n): " + $IP}    
    
    " - Installierte HotFix-Updates - "
    Get-HotFix | Format-Table
    }
    }
    Process
    {
    foreach ($C in $ComputerName){
        if ($Anmeldeinformationen.IsPresent) {icm $C -Credential (Get-ComputerInfo).CsUserName $skript}
        else {icm $C $skript}
    }
    }
    End
    {
    }
}
In diesem Sinne...

Ulrich Wiedholz
UW-Operator.de
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste