Mit Powershell Systemdaten von Windows Systemen auslesen

powershell win32 processor1

Wer mit Powershell die Systemdaten seiner Windows Server und Clients auslesen möchte, dem wird diese Zusammenstellung der Powershell-Befehle hilfreich sein.

allgemeine Befehlsübersicht

Get-WmiObject im Microsoft Technet

Get-ACL im Microsoft Technet

Nutzerverwaltung

Lokale Nutzer und lokale Gruppen auslesen

Get-WmiObject Win32_Group -Filter "LocalAccount = $true"

Dateisystem, Dateien, Ordner- und Freigabeberechtigungen

Anzeigen alle freigegebenen Ordner (Shares)

Get-WmiObject -Class Win32_Share

Ordnerberechtigungen auslesen

Get-Acl zeigt euch in Powershell die Ordnerberechtigungen an.

Get-Acl -Path "C:\Windows"

(Get-Acl -Path "C:\Windows").Access

Mit den folgenden Zeilen werden die Ordnerberechtigungen in eine CSV-Datei geschrieben. Dis Auswahl an Ordnern könnt ihr über das Array $folder an Get-Acl übergeben.

### NTFS Berechtigungen von mehreren Ordner auslesen
$csv_file="c:\temp\csv_acl.csv"
$folder=@("c:\windows\","c:\temp")
foreach ($folder in $special_folders){

        if (Test-Path -Path $folder) {

            $perm=(Get-Acl -Path $folder).Access
            $perm | Add-Member -MemberType NoteProperty -Name Share_Path -Value $folder -PassThru | Add-Member -MemberType NoteProperty -Name Share_name -Value "" -PassThru
        }
    }
if($perm.count -gt 0){
        $perm | Export-CSV $csv_file -Delimiter ";" -NoTypeInformation
}

Share-/ Freigabeberechtigungen auslesen

Mit „Get-WmiObject -Class Win32_Share“ und „Get-SmbShareAccess“ könnt ihr euch alle konfigurierten Shares eines Rechner samt Berechtigungen anzeigen lassen. In dem folgenden Zeilen wird die Ausgabe in einer CSV-Datei gespeichert. Das Heißt, Freigabe und NTFS Berechtigungen werden in separate CSV-Dateien geschrieben. Sicherlich geht das auch kompakter. 😉

$shares = Get-WmiObject -Class Win32_Share

$csv_report_file_shareinfo = "C:\temp\csv_shareinfo.csv";

$csv_file = "C:\temp\csv_shareinfo_ntfs.csv";

$csv_data_share="Name;Path;s_Name;s_ScopeName;s_AccountName;s_AccessControlType;s_AccessRight;workaround;`r`n"
    
foreach($local_path in $shares){
            
        write-host "- Get Data from: "$local_path.Name" ("$run")"
        
        ### get NTFS permissions
        if($local_path.Path.Length -gt 1){

            get-acl $local_path.Path | ForEach {
                $Sharename= $local_path.Name
                $Share_descr=$local_path.Description
                $Path = (Convert-Path $local_path.Path)
                $_.Access | ForEach {
                    $_ | Add-Member -MemberType NoteProperty -Name Share_Path -Value $Path -PassThru | Add-Member -MemberType NoteProperty -Name Share_name -Value $Sharename -PassThru | Add-Member -MemberType NoteProperty -Name Share_Descr -Value $local_path.Description -PassThru
                }
            } | Export-CSV $csv_file -Delimiter ";" -NoTypeInformation
        }
     
        ### get share permissions
               write-host "- Get Share Infos from: "$local_path.Name
 
                if($local_path.Path.Length -gt 1){
           
                   $share_data = Get-SmbShareAccess -Name $local_path.Name 
                   $csv_data_share+=$local_path.Name+";"+$local_path.Path+";"+$share_data.Name+";"+$share_data.ScopeName+";"+$share_data.AccountName+";"+$share_data.AccessControlType+";"+$share_data.AccessRight+";workaround;`r`n"

                }
}
$csv_data_share | out-file $csv_report_file_shareinfo -Encoding ascii;

Systeminformationen mit Powershell auslesen

Festplatten auslesen

Get-WmiObject -Class Win32_logicaldisk 

installiertes Betriebssystem auslesen (Windows Buildnummer, Version ,….)

Get-WmiObject -class win32_operatingsystem

Systemdaten wie Seriennummer, Modell und Hersteller mit Powershell auslesen

Get-WmiObject -Class win32_computersystem

Prozesser mit Powershell auslesen

Get-WmiObject -Class Win32_Processor

Bios Version und Seriennummern auslesen

get-wmiobject win32_bios

Netzwerkeinstellungen, das ip-connfig unter Powershell

Mit get-wmiobject -class win32_quickfixengineering könnt ihr euch eure Netzwerkeinstellungen

Get-WmiObject win32_networkadapterconfiguration

installierte Windows Updates mit Powershell auslesen

Mit „get-wmiobject -class win32_quickfixengineering“ könnt ihr euch die installierten Windows Updates anzeigen lassen. Die folgende Zeile leitet die Ausgabe in eine CSV-Datei um.

get-wmiobject -class win32_quickfixengineering | Select-Object -Property Source,Description,HotFixID,InstalledBy,InstalledOn | Export-Csv C:\temp\csv_export.csv

weitere Beiträge um das Thema Powershell