Endlosschleife bei Gruppen im Active Directory finden

Im Active Directory kann man bekanntlich Gruppen als Mitglied von anderen Gruppen eintragen. Wenn man dabei nicht aufpasst hat man in Active Directory ruck zuck eine Endlosschleife gebastelt, indem man Gruppe A als Mitglied von Gruppe B und Gruppe B als Mitglied von Gruppe A einträgt. Scripte oder Programme, die Benutzergruppen auflösen können hier schnell Probleme mit haben.

Ein schönes PowerShell-Script, das die Gruppen durchgeht und nach Endlosschleifen sucht gibt auf der Website von Richard L. Mueller.

Netzlaufwerk wird leer angezeigt nachdem Offline Dateien Partnerschaft entfernt wurde

Gerade hatte ich hier einen Windows 8.1 Laptop auf dem mehrere Partnerschaften für Offline Dateien eingerichtet waren. Nachdem eine Partnerschaft gelöscht wurde bestand das Problem, dass das Netzlaufwerk, mit dem die Partnerschaft bestand, leer angezeigt wurde. Die Dateien waren jedoch auf jeden Fall noch vorhanden. Laufwerk neu verbunden, VPN-Verbindung neu aufgebaut, Rechner neu gestartet, alles nichts geholfen.

Netzlaufwerk wird leer angezeigt nachdem Offline Dateien Partnerschaft entfernt wurde weiterlesen

Internet Explorer unter Windows 2012 Server benutzbar machen

Wie auch in den vorherigen Versionen vom Windows Server wird der Internet Explorer mit aktivierter erweiterter Sicherheitskonfiguration ausgeliefert. In der Theorie eine gute Sache, ist es in der Praxis immer extrem nervig da man nicht mal von der Download-Seite von Microsoft etwas herunterladen kann. In den Einstellungen vom Internet Explorer kann man sich zu Tode klicken wenn man versucht die Downloads zu erlauben.

Eigentlich ist es ganz einfach die Sicherheitskonfiguration zu deaktivieren, es ist nur ein kleines Bisschen besser versteckt als bei der Vorgängerversion Windows Server 2008. Internet Explorer unter Windows 2012 Server benutzbar machen weiterlesen

Deutsches Tastaturlayout mit englischem Windows 8

Ich bevorzuge seit einiger Zeit mein Windows auf Englisch zu nutzen, in erster Linie weil es die Suche nach Fehlermeldungen im Internet deutlich vereinfacht, man findet einfach viel mehr zu dem aktuellen Problem. Besonders deutlich ist es bei der Nutzung von Visual Studio, nutzt man ein englisches VS auf einem deutschen Windows hat man auf einmal mittendrin irgendwelche Meldungen auf Deutsch und steht wieder da, muss sie übersetzen, hoffen dass man die richtigen englischen Worte erraten hat, alles sehr nervig.

Das ganze lief immer super, bis Microsoft mit Windows 8 ein paar Sachen geändert hat. Zum Ersten die Tastenkombination zum Umschalten des Tastaturlayouts. Seit (ich glaube) Windows 95 bis hin zu Windows 7 konnte man mit der Tastenkombination Alt+Shift zwischen den aktiven Tastaturlayouts umschalten, bei den letzten Windows-Version war das bei einem deutschen Windows in der Regel DE und US (aus irgend einem Grund war das immer aktiv, das deutsche Layout jedoch das Primäre).

Deutsches Tastaturlayout mit englischem Windows 8 weiterlesen

Windows-System klonen

Die Tage bin ich auf dieser Seite über eine Methode gestolpert, einen Klon von einem Windows-PC zu erzeugen, die ich so noch nicht kannte und die ich hier kurz festhalten möchte. Vorteil der Methode ist, dass sie recht schnell geht und ausschließlich kostenlose Open Source-Programme verwendet werden. Ebenfalls vorteilhaft ist, dass beide verwendeten Programme auf der SystemRescueCD vorhanden sind.

Für die Anleitung habe ich ein Windows XP in einer VM mit VMware Player aufgesetzt, das letzte Service-Pack sowie mit ninite ein paar Tools installiert. Die Anleitung dürfte aber auch mit anderen Windows-Versionen funktionieren.

Windows vor dem Klonen

Windows-System klonen weiterlesen

Foto Manager für Windows

Seit ich ernsthaft digital fotografiere wird meine Bildbibliothek immer größer, und um der immer größer werdenden Bilderflut Herr zu werden habe ich mich jetzt doch mal dazu durch gerungen mir diverse Programme zum Verwalten von Fotos anzuschauen. Bisher habe ich die Bilder einfach in Ordnern liegen gehabt, strukturiert nach Jahr/Monat/Jahr-Monat-Tag-Ereignis, was eigentlich schon recht übersichtlich ist.

photo_import_icons

Dabei geht es mir gar nicht groß um das (Nach-)Bearbeiten von Fotos, das mache ich so gut wie nicht. Ich möchte einen komfortablen Import von der Kamera oder Speicherkarte, die Bibliothek gut durchsuchen und durchstöbern können und ausgewählte Bilder möglichst einfach bei Flickr und Facebook hochladen können. Dabei fallen erstmal die üblichen Verdächtigen ein: Foto Manager für Windows weiterlesen

Maximale Feldlänge im Active Directory

Bereits Freitag beschäftigte mich das Problem, dass ich bei einigen Usern keine neuen Einträge in das Notizfeld im Active Directory schreiben konnte (das Feld wird von uns als Protokoll für den Benutzer betreffenden Aktionen genutzt). Anfangs ging es recht problemlos mit diesen Befehlen:

$user = Get-QADUser -Identity $uid
$note += "`r`n" + $user.Info
Set-QADUser $user -Notes $note

Hier wird einfach das Info-Feld ausgelesen, die neue Zeile davor gesetzt und dann beim User wieder gesetzt.

Neuerdings trat dabei immer wieder der recht wenig aussagekräftigen Fehler A constraint violation occurred auf. Ein Umschreiben auf die entsprechenden Befehle von Microsoft gab dann eine etwas brauchbarere Meldung: A value for the attribute was not in the acceptable range of values.

$user = Get-ADUser -Identity $uid
$note += "`r`n" + $user.Info
$user |Set-ADUser -Replace @{Info=$note}

Diese Information brachte mich auf die richtige Spur: Attribute im AD haben (nicht wirklich überraschend) eine Maximallänge, beim Info-Feld sind es anscheinend 1024 Zeichen.

Als Workaround habe ich das Skript so umgeschrieben, dass direkt im Notizfeld nur die letzten 10 Meldungen gespeichert werden. Die Meldungen wurden ohnehin schon zusätzlich in einer Datenbank abgelegt, so dass hier nichts verloren geht. Hier das vollständige Skript:

param( [string]$uid, [string]$note )

# Fehler abfangen und als sauberen Text ausgeben
trap [Exception] { 
	"ERROR: " + $_.Exception.Message
	exit
}
# Einschränken was vom AD-Modul geladen wird
$env:ADPS_LoadDefaultDrive = 0
Import-Module ActiveDirectory -Cmdlet Get-ADUser,Set-ADUser

# User-Objekt holen
$user = Get-ADUser -Identity $uid -Properties Info
# Neue Notiz am Anfang einfügen
$note += "`r`n" + $user.Info
# notiz in zeilen auftrennen, erste 10 nehmen, wieder zu string zusammenfügen
$note = (($note -split '[\r\n]+') | Select-Object -First 10) -join [environment]::NewLine
# Neue Notizen wieder ins User-Objekt schreiben
$user |Set-ADUser -Replace @{Info=$note}
"SUCCESS: Die Notiz wurde hinzugefuegt"

Import-PSSession beschleunigen

In ein paar Powershell-Scripten, die Befehle an Domain-Controller und Exchange-Server absetzen störte es mich schon seit geraumer Zeit, dass das initiieren der Scripte relativ lange dauert. Besonders bei Exchange-Zugriffen fiel es extrem auf, also fügte ich ein paar Zeitausgaben ein und analysierte die einzelnen Befehle.

param( [string]$uid, [string]$exhost )

function GetElapsedTime() {
    $runtime = $(get-date) - $script:StartTime
    $retStr = [string]::format("{3}.{4} seconds", `
        $runtime.Days, `
        $runtime.Hours, `
        $runtime.Minutes, `
        $runtime.Seconds, `
        $runtime.Milliseconds)
    $retStr
}

$script:startTime = get-date
write-host "Start: $(GetElapsedTime)"

$session = New-PSSession -Configurationname Microsoft.Exchange -ConnectionUri http://$exhost/powershell
write-host "New-PSSession: $(GetElapsedTime)"

Import-PSSession $session -CommandName "Get-CASMailbox" | Out-Null
write-host "Import-PSSession: $(GetElapsedTime)"

$mailbox = Get-CASMailbox $uid |Select-Object ActiveSyncMailboxPolicy,ActiveSyncEnabled,Name
write-host "Get-CASMailbox: $(GetElapsedTime)"

[string]::format("{0}: {1}, {2}", $mailbox.Name, $mailbox.ActiveSyncEnabled, $mailbox.ActiveSyncMailboxPolicy)

Ausgabe:

Start: 0.0 seconds
New-PSSession: 0.562 seconds
Import-PSSession: 11.296 seconds
Get-CASMailbox: 11.406 seconds
jdoe: True, Default

Fazit: Das größte Problem ist Import-PSSession wenn es sich mit dem Exchange-Server verbindet, es braucht meistens zwischen 11 und 13 Sekunden bis das Script weiter laufen kann. Nach einigem Suchen und Ausprobieren stieß ich auf den Parameter -CommandName, der einschränkt welche Befehle man importieren möchte.

$session = New-PSSession
Import-PSSession $session -CommandName "Get-CasMailBox"

holt nur den angegebenen Befehl in die Session, dafür dauert der Import dann aber auch nur ca 1,5 Sekunden, was die Gesamtlaufzeit des Scriptes immerhin auf ein Zehntel reduziert. Ergebnis:

Start: 0.15 seconds
New-PSSession: 0.468 seconds
Import-PSSession: 1.937 seconds
Get-CASMailbox: 2.156 seconds
jdoe: True, Default

Das ganze bringt natürlich nur einen Vorteil wenn man nur wenige Befehle in einem Script benötigt.

Windows Key mit anderer Sprache verwenden

Mit dem Einbau einer SSD stand bei meinem Laptop auch eine Neuinstallation von Windows 7 an.  Da ich mich im Büro mittlerweile an ein englisches Windows gewöhnt habe, und die Vorteile eigentlich nicht mehr missen möchte, dachte ich mir ich probiere mal aus ob der Lizenzschlüssel von meiner deutschen Installations-DVD auch mit einem englischen Windows 7 funktioniert.

Windows Key mit anderer Sprache verwenden weiterlesen

Domain Controller remote über MMC verwalten

Heute habe ich mir auf meinem lokalen Rechner mit Windows 7 die „Remote Server Administration Tools for Windows 7“ installiert um damit direkt auf unsere Domain Controller zugreifen zu können ohne jedes Mal erst eine RDP-Verbindung aufmachen zu müssen. Das ganze war eigentlich nicht sonderlich kompliziert, aber auch nicht wirklich offensichtlich, daher hier die Zusammenfassung.

Domain Controller remote über MMC verwalten weiterlesen