Jump to content

blub

Expert Member
  • Gesamte Inhalte

    7.598
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von blub

  1. Es gibt das calculated UserAttribute "ms-DS-User-Password-Expiry-Time-Computed" siehe: https://msdn.microsoft.com/en-us/library/ms677839%28v=vs.85%29.aspx an dem sich der Logon orientiert. Da es "calculated" ist, ist es sofort nach Setzen der Policy wirksam blub
  2. 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
  3. 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
  4. 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
  5. $null: im Managerfeld gab es noch nie einen Wert "" : es gab mal einen Eintrag im Feld, aber der wurde wieder gelöscht 0 : der Manager ist eine 0 deswegen ist wahrscheinlich dieser Ausdruck richtig: Get-ADUser -Filter * -properties -manager | Where-Object { $([String]::IsNullOrEmpty($($_.manager))) } BTW: "-Filter * " kannst du dir auch sparen
  6. 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 Nein! leer ist nicht gleich leer in einer Datenbank blub
  7. 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 }
  8. 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
  9. Mal ohne Flachs http://msdn.microsoft.com/en-us/library/aa394583%28VS.85%29.aspx alle Klassen, die *event am Ende im Namen haben, kann man mit Powershell, VBS oder was auch immer abfragen. Eine Klasse, die Events beim Wechsel des Akkubetriebsmodus erzeugt, sehe ich hier aber nicht. Um z.B. das Erstellen von Dateien zu monitoren, könnte man __InstanceCreationEvent benutzen, .
  10. ja, für "leer" bzw. "ganz leer" solls ganz spezielle Events geben :-)
  11. Welche Events hat denn so ein Akku bzw. eine Battery, auf die man reagieren könnte?
  12. Kann es an unterschiedlichen .Net Versionen liegen?
  13. Hi lade evtl .mal die Klasse vorher [void][reflection.assembly]::LoadWithPartialName("System.Net.webclient") blub
  14. 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
  15. 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
  16. 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
  17. 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
  18. blub

    Wmi Monitoring

    Hallo, Hier gibt 's einige Artikel zum WMI-Debuggen http://powershellpraxis.de/index.php/automation-interfaces/wmi#5%20Wenn%27s%20mal%20hakt blub
  19. 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
  20. 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
  21. Hallo, entweder remove-item -literalpath $_ oder [system.IO.Directory]::Delete($_) sollten funktionieren, wenn es nur an den Sonderzeichen liegt blub
  22. 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
  23. 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
  24. 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
  25. 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...