Archives for

Active Directory – per PowerShell “Objekt vor zufälligem Löschen schützen”

Seit Windows Server 2008 lassen sich AD-Objekte vor versehentlichem Löschen schützen. Hierzu muss in den Objekteigenschaften > Reiter Objekt der Haken “Objekt vor zufälligem Löschen schützen” gesetzt werden (zuvor >Ansicht >Erweiterte Features aktivieren).

Zum Aktivieren des Features für mehrere Objekte sollte (seit 2008 R2) die PowerShell genutzt werden.

1) Das AD-Modul aktiveren:
Import-Module ActiveDirectory

2) Einzelnes Objekt auswählen und Löschschutz aktivieren (Beispiel: der Container “Computers”)

Get-ADobject -Identity “CN=Computers,DC=DOMAIN,DC=TLD” | Set-ADobject -ProtectedFromAccidentalDeletion $true

3) OU samt beinhaltender Objekte auswählen und Löschschutz aktiveren (Beispiel: OU “SCCM-Users”)

Get-ADobject -Filter * -SearchBase “OU=SCCM-Users,DC=DOMAIN,DC=TLD” | Set-adobject -ProtectedFromAccidentalDeletion $true

4) Objekte der gesamten Domäne auswählen und Löschschutz aktivieren

Get-ADobject -Filter * -SearchBase “DC=DOMAIN,DC=TLD” | Set-adobject -ProtectedFromAccidentalDeletion $true

Read More

Benutzer per Email über Ablauf des Windows-Kennworts benachrichtigen

In Windows 7 werden Benutzer nach der Anmeldung nur noch durch eine Sprechblase der Taskleiste darüber informiert, dass deren Windows-Kennwort in naher Zukunft abläuft. Da diese Sprechblase gerne von Usern übersehen wird, kann zusätzlich mithilfe eine PowerShell-Skripts eine Emailbenachrichtigung eingerichtet werden.

Damit das Skript ausgeführt werden kann, muss es entweder auf einem Domain Controller (Win 2008 R2 aufwärts) oder einem Member-Server mit installierter “Active Directory-Domänendiensten”-Rolle aufgerufen werden. Außerdem muss ggf. noch PowerShell’s Execution Policy auf “RemoteSigned” angepasst werden:

Set-ExecutionPolicy RemoteSigned

Hiermit kann geprüft werden wie die Execution Policy konfiguriert ist (Standardwert: Restricted):

Get-ExecutionPolicy

 

1.) PowerShell-Skript erstellen
Diesen Code in einen Texteditor kopieren, die hervorgehobenen Stellen anpassen und als PowerShell-Skript speichern (z.B. C:\Temp\password.ps1):

———————————————

Import-Module ActiveDirectory

Get-ADUser -filter * -properties PasswordLastSet,EmailAddress,GivenName,Surname -SearchBase “OU=Benutzer,DC=domain,DC=de” -SearchScope Subtree |foreach
{
$PasswordSetDate=$_.PasswordLastSet
$maxPasswordAgeTimeSpan = $null
$maxPasswordAgeTimeSpan = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge

$today=get-date
$ExpiryDate=$passwordSetDate + $maxPasswordAgeTimeSpan

$daysleft=$ExpiryDate-$today

$display=$daysleft.days
$UserName=$_.GivenName
$SurName=$_.Surname

if ($display -lt 14 -and $display -gt 0)
{
$MyVariable = @”
Sehr geehrte/r $UserName $Surname,

Ihr Kennwort wird in $display Tagen ablaufen. Sollten Sie es nicht rechtzeitig aendern, wird das Internet abgeschaltet :)

Mit freundlichem Gruss,
EDV-Abteilung

*** Diese Nachricht wurde automatisch generiert – bitte nicht darauf antworten. ***

“@
send-mailmessage -to $_.EmailAddress -from kennwortwarnung@domain.de -Subject “IT Information: Ihr Kennwort wird in $display Tagen ablaufen” -body $MyVariable  -smtpserver smtp.domain.de
}
}

———————————————

Erläuterung:

OU=Benutzer,DC=domain,DC=de  > durch entsprechende OU-Struktur ersetzen (durch den Schalter “-SearchScope Subtree” werden Unter-OUs inkludiert)
$display -lt 14  > 14 = Zeitraum in Tagen bevor das Kennwort abläuft. Während des definierten Zeitraums wird der Benutzer bei Ausführung des Skripts gewarnt.
Sehr geehrte/r…  > Benachrichtigungsinhalt nach eigenem Geschmack gestalten.
kennwortwarnung@domain.de  > Austauschen gegen gewünschte Absenderadresse.
smtp.domain.de  > Email-Server

 

2.) Benachrichtigungsskript in die Windows-Aufgabenplanung einbinden
- In Aufgabenplanung “Neue einfache Aufgabe” erstellen
- Name & Zeitplan festlegen
- Aktion: Programm starten
- Programm starten:
> Programm / Skript: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
> Argumente hinzufügen (optional): -command C:\Temp\password.ps1
- Anschließend die Aufgabe bearbeiten und unter “Allgemein” die Haken “Unabhängig von der Benuzteranmeldung ausführen” und “Mit höchsten Privilegien ausführen” setzen

 

Quellen:
Technet-Forum
Technet
Mike Pfeiffer

Read More

netstat

netstat > Protokoll, Lokale Adresse, Remoteadresse (NetBIOS), Status

netstat -f > Protokoll, Lokale Adresse, Remoteadresse (FQDN), Status

netstat -n > Protokoll, Lokale Adresse, Remoteadresse (IP), Status

netstat -e > Ethernet-Schnittstellenstatistik incl. Pakete mit Status “Verworfen” und “Fehler

netstat | find “443″ > Protokoll, Lokale Adresse, Remoteadresse, Status > ausschließlich Einträge die 443 enthalten

Read More

PowerShell | Attribute eines AD-Objekts abfragen

Abfrage von AD-Attributen anhand eines Benutzer-Objekts (Max Muster):

1) Get-ADUser -Identity Max

2) Wem das zu wenig ist, erhält hiermit sämtliche Attribute des AD-Benutzers: Get-ADUser -Identity Max -Properties *


3) Folgender Befehl zeigt den Common Name [CN] und den SID (cn,objectsid) sämtlicher AD-Benutzer (-Filter *) in Form einer Liste (| fl) an: Get-ADUser -Filter * -Properties * | fl cn,objectsid

4) Soll die Suche auf Besucher einer bestimmten OU eingeschränkt werden, ist der Filter wie folgt zu setzen: Get-ADUser -Filter * -SearchScope OneLevel -SearchBase “DN der OU” -Properties * | fl cn,objectsid


Soll sowohl die genannte OU als auch deren Unter-OUs durchsucht werden, ist der Befehl anzupassen: “-SearchScope SubTree“.

 

Read More

Gelöschte AD-Objekte | tombstoneLifetime

Die Tombstone-Lifetime einer Gesamtstruktur definiert wie lange gelöschte AD-Objekte in der AD-Datenbank vorgehalten werden, bevor sie endgültig gelöscht werden. Während dieser Zeit wird ein Tombstone-Objekt des gelöschten Objekts im Container “Gelöschte Objekte” erstellt. Das Attribut “isDeleted” des AD-Objekt wurde zuvor auf “true” gesetzt.

Wurde ein AD-Objekt als isDeleted=true markiert, wurden vor Windows Server 2008 R2 alle Attribute des Objekts entfernt, bis auf folgende: GUID, SID, SIDHistory und der DN. Bei einem Restore des Objekts konnten daher nur diese 4 Attribute wiederhergestellt werden. In Windows Server 2008 R2 werden sämtliche Attribute in das Tombstone-Objekt übernommen. Das AD-Objekt kann demnach vollständig (auch inkl. Gruppenzugehörigkeiten) wiederhergestellt werden. Dies erfordert allerdings eine vorherige Aktivierung des AD-Papierkorbs!

Die Tombstone-Lifetime bestimmen und anpassen:

ADSIEdit
1) Per ADSIEdit mit der Konfigurations-Partition verbinden
2) Wechseln zu
CN=Configuration,DC=contoso,DC=com
CN=Services
CN=Windows NT
CN=Directory Service
Eigenschaften
3) Attribut = tombstoneLifetime
4) ggf. über “Bearbeiten” den gesetzten Wert anpassen

CMD / PowerShell (Active Directory-Modul)
CMD – TSL bestimmen: dsquery * “cn=directory service,cn=windows nt,cn=services,cn=configuration,dc=contoso,dc=com” –scope base –attr tombstonelifetime

Zum Vergrößern anklicken.

PowerShell – TSL anpassen: Set-ADObject -Identity “CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=contoso,DC=com” –Partition “CN=Configuration,DC=contoso,DC=com” –Replace:@{“tombstoneLifetime” = 365}   (im Beispiel wird die Aufbewahrungszeit auf 365 Tage festgelegt)

Zum Vergrößern anklicken.

Die Standard-Aufbewahrungszeit für gelöschte AD-Objekte in einer 2008 R2-Gesamtstruktur liegt bei 180 Tagen.

Quellen
http://technet.microsoft.com/en-us/library/cc784932%28v=ws.10%29.aspx
http://technet.microsoft.com/en-us/library/dd392260%28v=ws.10%29.aspx
http://technet.microsoft.com/en-us/library/dd379542%28v=ws.10%29.aspx

Read More

Exchange 2007 / 2010 – Automatische Antworten verbieten (Outlook Abwesenheitsassistent)

User können mithilfe des Outlook-Abwesenheitsassistenten Email-Empfänger außerhalb der eigenenen Exchange-Organisaton über ihre Abwesenheit informieren. Da diese Benachrichtigungen im schlimmsten Fall Spammern Tor und Türen öffnet, ist der Einsatz des Abwesenheitsassistenten in vielen Unternehmen nicht erwünscht. Dies lässt sich u.a. durch eine Betriebsvereinbarung untersagen. Möchte man jedoch sicher gehen, dass tatsächlich keine Abwesenheitsmitteilungen mehr nach Außen gelangen, müssen auf dem Exchange einige Anpassungen vorgenommen werden.

Im Beispiel soll die Abwesenheitmitteilungssperre lediglich für die Domäne test.de (inklusive aller Unterdomänen) greifen. Dürfen Abwesenheitsnachrichten an gar keine externen Domänen versandt werden, kann die “Default” Remotedomäne genutzt werden.

Remotedomänen werden in Exchange 2007 / 2010 unter dem Menü > Organisationskonfiguration > Hub-Transport > Reiter “Remotedomänen” verwaltet. Hier sollte sich bereits der Eintrag “Default” befinden, welcher alle externen Domänen umfasst (Domäne = *).

Für test.de muss über das Aktionsmenü eine weitere Remotedomäne erstellt werden.

Über die Exchange-Verwaltungsshell lautet der Befehl zur Erstellung der Remotedomäne:

New-RemoteDomain -Name Test-Domäne -DomainName *.test.de

In den Eigenschaften der neu erstellen Remotedomäne ist unter dem Reiter “Nachrichtenformat” der Haken “Automatische Antworten zulassen” zu entfernen.

In der Verwaltungsshell lässt sich selbiges über diesen Befehl einstellen:

Set-RemoteDomain -Identity Test-Domäne -AutoReplyEnabled:$False

Read More

WMI-Abfragen per PowerShell

Die im vorherigen Post gezeigten WMI-Abfragen lassen sich ebenfalls in die PowerShell übernehmen, allerdings mit leicht veränderter Syntax.

Abfragemöglichkeit 1
Übernahme der bekannten WMI-Query in den PowerShell-Befehl:

Get-WmiObject -Query “SELECT Name FROM Win32_Processor”

Abfragemöglichkeit 2

Abfrage aller Prozessor-Informationen über den “neuen” PowerShell-Befehl:

Get-WmiObject Win32_Processor

Abfragemöglichkeit 3:
Abfrage aller Prozessor-Informationen mit anschließender Formatierung der Darstellung (Format List – fl) und Filterung nach “Name”:

Get-WmiObject Win32_Processor | fl Name

Abfragemöglichkeit 4:
Enthält die ursprüngliche Abfrage einen Filter (WHERE), kann dies ebenfalls in PowerShell abgebildet werden:

Get-WmiObject Win32_Processor -Filter “AddressWidth = ’64′ AND
Manufacturer = ‘GenuineIntel’” | fl Name

 

Read More

PowerShell | Module

Mit Windows Server 2008 R2 wurden neue Module für die PowerShell und damit verbundene CommanLets zur Verfügung gestellt.

Um eine Liste der verfügbaren Module auf dem Server zu erhalten:

Get-Module -ListAvailable

Die jeweiligen Module müssen über diesen Befehl in die PowerShell importiert werden, um die entsprechenden CommandLets (zum Beispiel zur Administration des Active Directory) nutzen zu können ["ActiveDirectory" muss ggf. durch das entsprechende Modul ersetzt werden]:

Import-Module ActiveDirectory

Zusätzliche Module fügt man über den selben Befehl hinzu (z.B. Import-Module AppLocker). Eine Liste der geladenen PowerShell-Module erhält man über:

Get-Module

Eine Übersicht der verfügbaren CommandLets des jeweiligen Moduls liefert PowerShell über diesen Befehl ["ActiveDirectory" muss ggf. durch das entsprechende Modul ersetzt werden]:

Get-Command -Module ActiveDirectory

Read More