Jump to content

blub

Expert Member
  • Gesamte Inhalte

    7.598
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von blub

  1. Hallo,

     zur Smartcardanmeldung brauchst du den Zertifikatsserver nicht!

     

    Normalen Usern setzt du das Attribut "Logon requires smartcard"  (oder so ähnlich), dem Domainadmin nicht.

    Dann kann sich der Domainadmin mit SC anmelden, muss aber es aber technisch nicht. Er soll sich im Normalbetrieb immer mit SC anmelden, kann sich aber im Notfall auch mit PW anmelden. Ein Notfallaccount mit einem 18+ stelligen PW ist sicher auch sinnvoll.

    Wenn du sicher gehen willst, kannst du im Eventlog überwachen, ob es PW-Anmeldungen gibt. Musst ein bisschen nach den passenden Events googlen

     

    blub

  2. Hallo Willy,

    Falls es dich noch interessiert: Ich habe mir mal ein PS-Skript geschrieben, mit dem ich nach jedem GPO-Change die Konsistenz der GPOs prüfe. Das Skript prüft von jeder GPO auf jedem DomainDC die Policy Version in der AD-Datenbank gegen die AD-Version am PDCe und gegen die lokale Sysvol-Version in der GPT.ini.

     

    http://www.powershellpraxis.de/index.php/gpos-und-ous-mit-net

    -> 2 LDAP -> Beispiel 1

     

    blub

  3. Hallo,

     

    könntet Ihr mir bitte weitere Infos diesbezzüglich zukommen lassen, Links oder dergleichen.

    bin aktuell auf der Suche nach dem roten Fade

     

    Hallo

    "IsNullOrEmpty" ist eine sogenannte statische Methode der Klasse String. Erkennbar an dem roten "S" hier

    https://msdn.microsoft.com/de-de/library/system.string%28v=vs.110%29.aspx

    -> Methods Table -> Linke Spalte

    bzw.

    [string]$a | gm -static    (benutz aber lieber die MSDN)

     

    Die Syntax für den Aufruf statischer Methoden lautet in PS:

    [<Klasse>]::<statische Methode>(<parameter1,parameter2,....>)
    bzw. für die Stringklasse
    [System.String]::IsNullOrEmpty($a)  -> True/ False
    [System.String]::Concat($a,$b)
    usw..
    

    für nicht statische Methoden (also die ohne rotes "S") muss dagegen zuerst ein Objekt mit z.B. "New-Object" gebaut werden

    $a=New-Object System.String("ddd")
    $a.ToUpper()
    

    Die String-Klasse ist natürlich nicht so wahnsinnig interessant :-)

     

    blub

  4. so gehts:

    $User = Get-ADUser "user1" -Properties manager
    [String]::IsNullOrEmpty($($User.mamager))
    

    liefert "true", wenn die Property leer ist, egal ob jemals etwas darin gestanden hat, oder nicht. Wenn du das unterscheiden willst,  kannst du auf $Null oder "" abfragen

     

     

    .... Und wenn er leer ist, dann ist er leer :D

     

     

    Nein! leer ist nicht gleich leer in einer Datenbank
     

     

    blub

  5. von Batch und externen Programmen wie was.exe kann man eigentlich nur noch abraten

     

    Arbeite dich besser in die Powershell ein:

    als Einstieg:

    $Treshhold = 1  #in days
    $FilePath="C:\Test.txt"
    
    $IsOlderThanThreshhold =  $( $(get-date)  - $(get-Item $FilePath).Lastwritetime   ).Totaldays -lt $Treshhold 
    
    If($IsOlderThanThreshhold){
      eventcreate /t error /id 100 /l application /d "blabla"
      #better: http://blogs.technet.com/b/heyscriptingguy/archive/2013/06/20/how-to-use-powershell-to-write-to-event-logs.aspx
    }
    
  6. Hallo,

    Das habe ich mir mal in PS geschrieben. Jenachdem wo die Certifficate liegen, muss du evtl.die Certificate Location und die Storenames anpassen. Sonst kannst du das Skript einfach laufen lassen.

     

    blub

    Clear-Host
    Set-StrictMode -Version "2.0"
    
    Function Main{
      Read-Store "My" #Trusted Root Certification Authorities"
      Read-Store "Root" #Trusted Root Certification Authorities"
      Read-Store "AuthRoot" #Third-Party Root Certification Authorities
    }
    
    Function Read-Store{
      Param($Store)
      $Store = New-Object System.Security.Cryptography.X509Certificates.X509Store("$Store","LocalMachine")
      $Store.Open("ReadOnly")
      $X509s = @($Store.Certificates)
      #$Certs.count
    
      $StoreCerts = @()
      Foreach ($X509 in $X509s){
          $Cert = New-Object -TypeName Psobject -Property @{
          "Subjectname" = $($X509.Subjectname);
          "FriendlyName" = $X509.FriendlyName;
          "Subject" = $X509.subject;
          "Issuer" = $X509.Issuer;
          "Thumbprint" = $X509.Thumbprint;
          "NotAfter" = $X509.NotAfter;
          "NotBefore" = $X509.NotBefore;
           }#Psobject
       $StoreCerts += $Cert
      } #foreach
     
       "Store: {0} - Count: {1} `n" -f $($Store.name),$($StoreCerts.count)
       $StoreCerts | sort NotAfter| ft Thumbprint,Friendlyname,NotAfter
       "-" * 60
    } #End ReadStore
    
    Main
    
  7. den "Allow Replication With Divergent and Corrupt Partner,"  würde ich nur nach reiflicher Prüfung aufmachen. Damit schaltest du etliche qualitätssichernde und fehlervermeidende Replikationsfilter einfach ab.

    Da würde ich lieber einen DC depromoten und neu promoten. Das ist relativ gefahrlos und musst du sowieso beherrschen.

    Wenn du in einer größeren Umgebung unterwegs bist, hast du doch bestimmt noch ein paar Kollegen in der Rückhand. Sprich dich auf jeden Fall mit denen ab, bevor du Schritte unternimmst, deren Auswirkungen du nicht genau kennst.

     

    Es gibt übrigens ein relativ neues Tool von MS, um Lingering Objects zu beseitigen:  "Lingering Object Liquidator".   Habs selbst aber noch nicht eingesetzt

    http://blogs.technet.com/b/askpfeplat/archive/2014/09/24/lingering-object-liquidator-for-active-directory-is-now-live.aspx

     

    blub

  8. ich weiss jetzt leider nicht genau worauf du hinaus willst.

    Der Umgang mit Lingering Objects bzw. deren Bereinigung ist in einem großen MultidomainForest, sagen wir mal >1000 DCs,  zwar nicht ganz Tagesgeschäft, aber zumindest Monatsgeschäft :) . Jedesaml ein Forestrecovery bei lingering objects ist natürlich keine ernsthafte Option. 

    Es gibt auch noch andere Ansätze zum Entfernen derselbigen, ich persönlich finde "repadmin /rehost"  relativ einfach und sicher.

     

    blub

  9. Hallo,

    Wegen ein paar lingering objects brauchst du keinen DC neu aufzusetzen.

     

    Suche im Eventlog (Directory Service) des DC nach Events 1988, 1388 etc,

    http://technet.microsoft.com/de-de/library/cc949134%28v=ws.10%29.aspx#BKMK_1988

    diese Events sollten dir sagen, in welcher Partition das oder die "Lingering Objects" liegen.

     

    anschließend suchst du dir einen "guten" DC ohne diese Events und rehostest die Partition manuell von dem guten auf den "schlechten" DC   

     

    repadmin /rehost <schlechterDC> <guterDC>  <PartitionName>

    repadmin /rehost DC01 DC07  DC=subdomain1,DC=Forest,DC=Intern

     

    Ist eine Sache von wenigen Minuten

     

    blub

  10. Hallo Christoph,
     
    Für solche Aufgabenstellungen bietet sich ein selbstdefiniertes [psobject] an

    $Names = @("SRV00","SRV01","SRV02")
    
    $Servers = @()
      ForEach($Name in $Names){
      [psobject]$Server = "" | select ServerName,FreePhysicalMemory
         $Server.ServerName = $Name
         $FreePhysicalMemory =  ((Get-WMIObject Win32_OperatingSystem -ComputerName $Name).FreePhysicalMemory) /1MB
         $Server.FreePhysicalMemory = $FreePhysicalMemory.Tostring("0.00")
         $Servers += $Server
       }
     
    #Alle Server  
    $Servers | ft -auto
    
    #Maximum
    $Servers | sort -descending FreePhysicalMemory | select -first 1
    
    ----
    
    Ausgabe:
    
    ServerName FreePhysicalMemory
    ---------- ------------------
    SRV00       5,41              
    SRV01       6,72              
    SRV02       5,26              
            
    
    ServerName FreePhysicalMemory
    ---------- ------------------
    SRV01      6,72        
    
    
    

    blub

  11. Hi,

    google doch mal nach

    "Powershell win32_computersystem JoinDomainOrWorkgroup"

     

    win32_computersystem hat die benötigten Methoden zum Joinen, Unjoinen und Rename von Compuztern

    http://msdn.microsoft.com/en-us/library/gg196633%28v=vs.85%29.aspx

     

    Get-WMIObject hat die Parameter  -computername und -credentials

    http://technet.microsoft.com/de-de/library/hh849824%28v=wps.620%29.aspx

    damit kannst du das Skript remote von deiner Workstation ausführen

     

    blub

  12. Hallo Tina,

     

    Bedenke aber, dass du ob mit oder ohne Zertifikaten für einen Arbeitgeber ein totaler Neuling in der Microsoftwelt sein wirst. Evtl. ist es für dich besser, in der Webdesignwelt weiterzumachen, wo du -wie eingangs du geschrieben hast- schon Erfahrungen nachweisen kannst. Bei Youtube und Google würdest du auch unzählige Vorträge und kostenlose ebooks über HTML/ CSS/ CMS/ PHP finden. Dazu vielleicht als Ergänzung noch den "Microsoft Internet Information Server".

     

    Über Zertifizierungen gehen die Meinungen bekanntlich auseinander: Meiner Meinung sind Zertifizierungen nur um Ihrer selbst Willen wenig sinnvoll. Sie können dann sinnvoll sein, wenn man sonst keine oder nur geringe Abschlüsse (Schule, Studium, Ausbildung) vorweisen kann.

     

    Viel Erfolg und Freude mit dem Junior

    blub

  13. Wenn es sich um ein Netzwerk mit wichtigen Daten handelt, schalt den Rechner ab und hole dir einen Profi, der sich mit Security und Forensik auskennt, zu Hilfe!

    Der kann herausfinden, ob weitere Rechner eures Netzes betroffen sind und der sollte Kontakte zum BSI und zu den großen Providern haben, die wiederum Inforamtionen zu den aktuellen Botnetzen haben.

    Der Profi kann euch auch beraten, wie man solche Angriffe zumindest erschweren und früher erkennen kann. Das Beweisstück, also den evtl. betroffenen Rechner, solltest du natürlich vor einer Analyse nicht vernichten.

     

    blub

  14. Hallo,

     

    per Powershell:

     

    Set-StrictMode -Version "2.0"
    Clear-Host

    $ComputerName = "myServer"
    $Threshhold = 1

    $Processes = Get-Process –Computername $ComputerName   
    $ProcessCount = $Processes | Group-Object ProcessName | Sort count -Descending
    $SortedCounts = $ProcessCount| Where {$_.Count -gt $Threshhold} | Format-Table Count,Name -auto
    $SortedCounts[/Code]

     

    würde etwa sowas liefern

     

    Count Name   
    ----- ----   
       12 svchost
        5 notepad
        2 csrss  
        2 nvvsvc

  15. Hallo Robert,

     

    In meiner alten Firma hatten wir dazu eine selbst entwickelte Lösung am Start.

     

    In einer zentralen OracleDB waren alle lokalen Passwörter von Clients und Servern zufallsgeneriert gespeichert. Die Passwortänderung erfolgte nur in der Datenbank selbst. Das neue PW wurde verschlüsselt und gesichert an die Clients geschickt und angewendet.

    Da war auch bei Bedarf ein automatischer PW-Wechsel konfigurierbar.

     

    Hat man ein lokales Passwort benötigt, bekam man dies nur von der Datenbank mitgeteilt.

    Ich habe das System nicht entwickelt, nur mitbenutzt. Es hat jedenfalls funktioniert.

     

    Kai

     

  16. Hallo,

     

    Mit ADSISearcher und LDAPControls läßt sich sowas auch lösen:

     

    Clear-Host
    Set-Strictmode -Version "2.0"

    $UserDN = "CN=myUser,,OU=Scripting,DC=Dom1,DC=Intern"

    $DirectorySearcher = ([ADSISearcher]"LDAP://")
    $DirectorySearcher.Filter = "(member:1.2.840.113556.1.4.1941:=$UserDN)"
    $DirectorySearcher.Searchscope="subtree"
    $DirectorySearcher.FindAll() | Foreach{
      $($_.Properties).cn
      } [/Code]

     

    blub

×
×
  • Neu erstellen...