Jump to content

blub

Expert Member
  • Gesamte Inhalte

    7.598
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von blub

  1.  Mit ODER kann ich Bits gezielt einschalten: 10110110 ^ 01000000 = 11110110

    Wenn man in der Elektrotechnik auf diese Art Zeug ansteuert, kenn ich das. Wo man das sonst brauchen könnte... k.A. ;-)))

     

    z.B. prinzipiell benötigt man boolsches Vergleiche um z.b. an Userkonten gezielt einzelne UserAccountControls wie trustedDelegation, smartcardrequired, accountdisabled etc. zu verändern oder auszulesen

    http://www.mcseboard.de/topic/190771-accounts-mit-trusted-for-delegation-rechten-im-ad-finden/

     

    ähnliches gilt für Berechtigungen im Filesystem

     

    Aber Batch und Bool passen denke ich eher nicht zusammen, obwohl beide ähnlich alt sein dürften :-)

  2. Ich habe dein Skript etwas angepasst. Als Datenstruktur benutze ich eine Datatable, damit kannst du die Ausgabe jenach Wunsch an Format-Table oder export-csv übergeben

     

     

    Set-StrictMode -Version "2.0"
    Clear-Host
    $Path= # Read-Host "Bitte FQDN des gewünschten Zielordners eingeben.(\\Server\freigabe)"
    
    #DataTable anlegen
    $Properties = @("Ordnername","Identitaet","Berechtigungen","Vererbt")
    $DataTable=New-Object System.Data.DataTable("FileACL")
    $Properties | foreach {
      $Column = New-Object System.Data.DataColumn($_)
      $DataTable.Columns.Add($Column)
     }
    
    #DataTable befüllen
    Get-ChildItem $Path -Recurse | foreach{
       $FolderName = $_.Name
       
       $ACLs= @((Get-ACL $_.FullName).Access) | sort
       $ACLs | foreach{
          $Identity=$_.IdentityReference
          $FileSystemRights=$_.FileSystemRights
          $IsInherited=$_.IsInherited
          $DataTable.Rows.Add($FolderName,$Identity,$FileSystemRights,$IsInherited) | Out-Null
        }
                 
    }
    #Datatable Filtern
    $Filter = "(Vererbt like 'False')"
    $FilteredDataTable = $DataTable.Select($Filter,$null)
    
    #DataTable ausgeben
    $FilteredDataTable | Format-Table OrdnerName,Identitaet,Berechtigungen,Vererbt -auto      #Host
    $FilteredDataTable | Export-Csv "c:\temp\ausgabe1.csv" -Delimiter ";" #File
    $FilteredDataTable | select Ordnername,Vererbt | Export-Csv "c:\temp\ausgabe2.csv" -Delimiter ";" #File
     
    • Like 1
  3. So könnte  die Anforderung in PS umgesetzt werden

     

     

    Set-StrictMode -Version "2.0"
    Clear-Host
    
    #RootPath
    $Path = "C:\temp\Homes"
    
    $Folders = Foreach($Folder in (Get-ChildItem $path -Recurse))
    {
     If($Folder.PSIsContainer -eq $True){
        New-Object -TypeName Psobject -Property @{
        Name = $Folder.FullName
        Size = $([int]((gci $folder.FullName -recurse | Measure-Object -Property "Length" -Sum).Sum))/1MB
        SumFiles = ((gci $Folder.Fullname  -recurse | Where {$_.PSIsContainer -eq $False}) |Measure-Object).Count
       }
      }
     }
    #Ausgabe1
    $Folders | sort SumFiles -descending | ForEach{
      "{0} {1:0.00} MB {2}" -f $($_.name),$($_.size),$($_.Sumfiles)
    }
    
    #Ausgabe2
    $Folders | sort SumFiles -descending | ft Name,Size,Sumfiles -auto
    
    #Ausgabe3 (csv)
    $Folders | sort SumFiles -descending | export-csv "c:\temp\folders.csv" -delimiter ";"

     

     

     

     

    #so könnten die ersten beiden Ausgaben aussehen
     
    C:\temp\Homes\HomeUser001 0,17 MB 114
    C:\temp\Homes\HomeUser002 0,17 MB 106
    C:\temp\Homes\HomeUser003 0,12 MB 64
    
    
    Name                                   Size SumFiles
    ----                                   ---- --------
    C:\temp\Homes\HomeUser001 0,168468475341797      114
    C:\temp\Homes\HomeUser002 0,168468475341797      106
    C:\temp\Homes\HomeUser003 0,115304946899414       64
  4. Hi,

    Ein Array ist zweidimensional.

    Ich benutze für mehrspaltige Tabellen meist DataTables als Struktur. Finde ich sehr flexible und übersichtlich

     

     

    $DataTable = New-Object System.Data.DataTable("Test")
    $Column1 = New-Object System.Data.DataColumn("Vorname")
    $Column2 = New-Object System.Data.DataColumn("Nachname")
    $Column3 = New-Object System.Data.DataColumn("Wohnort")
    $DataTable.Columns.Add($Column1)
    $DataTable.Columns.Add($Column2)
    $DataTable.Columns.Add($Column3)
    $DataTable.Rows.Add("Dagobert","Duck","Entenhausen") | out-null
    $DataTable.Rows.Add("Gundel","Gaukelei","Vesuv") | out-null
    $DataTable | format-Table "Vorname","Nachname","Wohnort" -AutoSize   #Bildschirm
    $DataTable | export-csv -delimiter ";" -path "c:\temp\test.csv"   #csv"

    #Ausgabe am Host Vorname  Nachname Wohnort    
    -------  -------- -------    
    Dagobert Duck     Entenhausen
    Gundel   Gaukelei Vesuv

     

    Bischen was zu Datatables in PS findest du hier:

    http://powershellpraxis.de/index.php/datenzugriffe-ueber-ado-net/2disconnectedclasses

     

    blub

  5. 1.) Möchte ich auch Unterordner überprüfen (ich habe an foreach gedacht, da get-childitem keine Pfade zurückgibt hänge ich)

    2.) oben beschriebenes Filtern sollte doch möglich sein - meinereiner weiß jedoch nicht wie ;)

     

    Hi,

    Zu 1) Man kann gci auch dazu überreden, die Pfade auszuspucken

     

     

    $Path= "c:\temp"
    Get-ChildItem $path -Recurse | foreach{
     If($_.PSIsContainer -eq $True){
       $_.fullname
       #$_.PsParentPath
       #$_.PschildName
       }
     }

     

     

    Ab PS3 kannst du den if-Block weglassen, und get-childitem den Positionsparameter -Directory mitgeben

     

    zu 2.)

    IsInherited hat entweder $true oder $false. Auf diese Werte kannst du doch filtern

     

    $a=4 -le 2
    $a
    if($a -eq $false){
       "Falsch"
       }else{
       "Richtig"
       }
    • Like 1
  6. Hallo,

    Wenn sich die wichtigen Dateien in einem Unterverzeichnis befinden, kannst du dieses Verzeichnis relativ leicht mit der FileSystemWatcher-Klasse überwachen:

     

    http://www.powershellpraxis.de/index.php/ntfs-filesystem/filemonitoring -> 4.3.2 FileMonitoring mit der .Net-Klasse FileSystemWatcher

     

    Vor längerer Zeit habe ich den FSW in einer exe verbaut. Kannst ihn ja mal ausprobieren

     

    blub

    fystemwatcher.zip

    • Like 1
  7. Hi,

     

    so müsste es gehen. Aber ich habe es jetzt nimmer getestet

     

    Set-StrictMode -Version "2.0"
    Clear-Host
    
    $ADS_UF_TRUSTED_FOR_DELEGATION = 0x80000
    
    $Filter = "objectClass=user"
    ([ADSISearcher]$Filter).Findall() | Foreach-Object {
    $UAC = ([ADSI]$_.Path).Invokeget("UserAccountControl")
    if($UAC -band $ADS_UF_TRUSTED_FOR_DELEGATION){
     Write "$($_.Properties.Item("DistinguishedName")) ist Trusted for Delegation"
    }
    }
    
    

     

    3 ADSI-Provider - > Kapitel 3.3

     

    blub

  8. Hallo Zeichenfolge,

     

    Du verzwirbelst hier und in dem anderen Post verschiedenste Dinge.

     

    sicherer Login/ Autorisierung/ Authentisierung/ Manipulation von RFID-Karten/ Festplattenverschlüsselung/ Selbstlöschung von Platten.

    Und alles zusammen für unter 250€ für deinen Win8-HomePC, oder?

     

    blub

  9. Hallo,

     

    sicherer Login = 2-Faktorauthentisierung aus Besitz + Wissen , also z.B. Smartcart + PIN, Fingerprint + Passwort, etc.

    RFID-Chips nimmt man eher als Zutrittskontrolle für Gebaude. Zum Anmelden nimmt man Cryptochips (Java, Starcos, Seccos, etc.) , die gelten als nicht manipulierbar.

     

    Hast du dich authentisiert und bist authentifziert, erfolgt die Anmeldung dann mittels privateKey + Zertifikat (2048 Bit). Die Schlüssellänge gilt heute als sicher.

     

    Festplattenverschlüsselung ist dann die nächste Baustelle.

     

    Bei Lösungen für den Home-Bereich kann ich dir allerdings auch nicht weiterhelfen. Ein großer Anbieter professioneller Lösungen für Smartcards ist G&D: http://www.gi-de.com/de/products_and_solutions/products/strong_authentication/strong-authentication.jsp

     

    blub

  10.  

    Kann dabei etwas schief gehen außer, dass es zu Script-Fehlern kommt?

     

     

    Außer dass das Skript alle vorhandenen Userkonten löscht oder sonstwie unbrauchbar macht, eigentlich nichts :D

    Ernsthaft: Sowas habe ich schon erlebt.

     

    Tipps:

    - Teste und prüfe ausgiebigst deine Skripte in einer Testumgebung und entwickle keinesfalls in der Produktivumgebung

    - Protokolliere jede Veränderung im AD in einer Logdatei mit

    - Changeprozesse zu befolgen und AD-Backup/ Restoreprozesse zu kennen ist nie verkehrt

    - Entwickle nicht mit einer Steinzeittechnologie wie VBS, sondern nimm Powershell.

     

    blub

  11. Hallo,

    Zertifikate sind mit dem Schlüssel der CA signiert. d.h. man kann nicht mal ein Komma, ein Leerzeichen oder gar den Gültigkeitszeitraum verändern, ohne dass die Signatur nicht mehr zum Inhalt passt und damit das Zertifikat ungültig wird. In der Unveränderbarkeit eines Zertifikats liegt ja seine Bedeutung für die Security.

     

    blub

×
×
  • Neu erstellen...