Windows 10 1607 und WSUS

Yay, noch beim 1511er anniversary update für Windows 10 war einer der kursierenden Tipps, Firmen-Rechner per GPO mit Aktivierung der Einstellung „Feature-Updates zurückstellen“ oder „defer upgrades“ in den Current branch for business zu bringen.

Diese Policy wurde allerdings mit den neuen Policy-Templates für das 1607er-Update durch eine andere Einstellung ersetzt. Wenn man eine dieser beiden Einstellungen aktiviert hat und gleichzeitig „Keine Verbindung mit Windows Update-Internetadressen herstellen“ verwendet, erhält man beim Versuch nach Updates zu suchen, den Fehler 0x8024500c. „Windows 10 1607 und WSUS“ weiterlesen

Windows 10 und Family Safety

Ganz nach dem Motto Schema unfertiger Komponenten läuft Family Safety, wenn man es unter Windows 8 für seine Kinder konfiguriert hatte, nicht mehr unter Windows 10 weiter, da die Benutzerkonten der Kids nun als Microsoft-Konten konfiguriert werden müssen…

Das allerdings hat bei mir anfangs überhaupt nicht gut funktioniert, denn nach dem Anlegen der Konten kamen die invitation-Mails nicht an und ich musste mehrere Male das komplette Prozedere wiederholen. Auf der Family Safety-Seite von Microsoft kann man dann allerdings auch nur bedingt sinnvolle Einschränkungen – z.B. beim Zeitfenster – vornehmen. Da fehlt noch einiges, würde ich sagen…

Ich kann mir nicht vorstellen, dass sich damit jemand Ungeübtes auseinandersetzen soll.

Windows Remote-Verwaltung via Powershell

Zwar schon ein paar Jahre alt, aber besonders die 1:n-Verwaltung ist immer noch sehr praktisch.

Auch die Desired State Configuration, die mit Powershell 4.0 gekommen ist, ist nützlich zur einheitlichen und identischen Vorbereitung von Servern, z.B. für identische Verzeichnisse, Rollen, Features, usw.

Sicheres W-LAN mit IEEE 802.1X und NPS-RADIUS mit Windows Server 2012

Guter Leitfaden, auch bei einem notwendigem Umzug, bei mir gerade Umzug von IAS 2003 nach NPS 2012.

Update: Sicheres W-LAN mit IEEE 802.1X und RADIUS mit Windows Server 2012 » Bents Blog » Von Bent Schrader.

Hinzuzufügen wäre nur folgendes:
Aufgrund der EAP (PEAP)-Implementierung kann man nur gegen ein Zertifikat zur Zeit validieren. D.h. entweder gegen Computerkonten ODER Benutzerkonten der Domäne, nicht beides in der Bedingungssteuerung der WLAN-Netzwerkrichtlinie des NPS. Um z.B. BYOD-Geräte zu verhindern, deren Nutzer sich mit ihrem gültigen Domänenbenutzer an diesen Geräten erfolgreich authentifizieren können, wäre wohl die Filterung auf Computer geeigneter.
Zu beachten war bei mir aber, dass in der GPO, die die Drahtlosnetzwerkrichtlinie konfiguriert, an einer Stelle angepasst werden muss, damit die NPS-Bedingung auch zuverlässig mit dem übereinstimmt, was dort ankommt.
Im Dropdown der Drahtlosnetzwerkrichtlinie, dort wo festgelegt wird, ob die Authentifizierung gegen Benutzer, Computer oder wahlweise eines von beiden erfolgen soll, sollte NUR Computer ausgewählt werden. Ansonsten versuchte sich der Client immer zunächst mit den Benutzer-Credentials anzumelden, obwohl in der NPS-Richtlinie eine Computergruppe als Bedingung angegeben war. Das klappte dann nicht.

Cyanogenmod 11 – läuft!

Zugegeben – meine Schmerzgrenze ist relativ hoch. Und so kam es, dass ich monatelang dem immer langsamer werdenden Reaktionen meines Galaxy S3 zuschaute, bisweilen mit leicht grimmigen Gesichtsausdruck und wachsender Ungeduld.

Ich bin in manchen Dingen auch ein Konservativling. So finde ich zum Beispiel, dass die Telefoniefunktion immer noch die Wichtigste ist und wenn ich mal jemanden anrufen will, dann muss es schnell gehen. Wenn aber diese Funktion auch nur eine App von vielen ist und es im Schnitt jeweils 2 Sekunden dauert, bis das Adressbuch geöffnet, der Kontakt und die richtige Telefonnummer ausgewählt ist und erneute 2-3 Sekunden verstreichen, bis dann endlich die Rufnummer gewählt wird, war mir das einfach zu viel.

Tja und dann ging mir die Bloatware auf den Senkel. Angefangen über Samsung-Kram hin zu Google-Apps. Außerdem konnte ich mit einem ungerooteten Gerät kein richtiges Backup durchführen – also als Nandroid-Image oder eben mit Tools wie z.B. Titanium-Backup.

Drum liebäugelte ich mit einem CustomRom wie Cyanogenmod. Dran gehindert hat mich die letzten Monate eigentlich nur die Tatsache, dass es eine komplette Neuinstallation des Betriebssystems ist und ich mich anfangs nicht damit beschäftigen wollte, wie ich wohl die Daten wie Bilder, Apps, Settings, Kontakte und Anrufhistorien sichern und dann wiederherstellen könnte. Naja, ich dachte, es wäre sicher zeitaufwendig. Außerdem war das Gerät ja noch nicht so alt.

Aber – es war gar nicht so schlimm! 🙂
Am Anfang rooten des Geräts (aber vorher lesen und verstehen), dann Daten sichern (Kontakte, Kalender dabei in der Cloud gespeichert – macht’s einfacher), Cyanogenmod installieren, gesicherte Apps (möglichst keine Systemapps!) wieder zurückspielen, einrichten – fertig. Gut, waren im Endeffekt 4-8 Stunden, die man mal investieren muss. Zuzüglich nochmal 1-2 Tage Kleinkram-Konfigurationen. Aber es lohnt sich, wie ich finde.
Als zusätzlichen AppStore habe ich F-Droid genommen, OpenSource ist schon cool. Ach – das Theme „Great Freedom“ sieht nicht nur gut aus, sondern passt auch vom Motto her ganz gut zum Endergebnis. 😉

Alles in Allem – richtig gut!

Exchange 2010 – aktuelle Anmeldungen herausfinden

Manoman…nicht alles wird einfacher mit neueren Versionen. Möchte man gern sehen, welche Benutzer sich innerhalb der letzten Stunde am Exchange-Server angemeldet haben, hilft folgendes, übersichtliches CmdLet:

Get-Mailbox -Resultsize Unlimited | Get-MailboxStatistics | where-object {$_.LastLogonTime -gt (get-date).AddHours(-1)} | select Displayname, LastLogonTime | Sort LastLogonTime

Oder folgendes:

Get-LogonStatistics -Server „SERVERNAME“ | Sort-Object -property UserName -unique | where-object {$_.LastAccessTime -gt (get-date).AddMinutes(-30)}

Aber Achtung – OWA-Zugriffe werden hier nicht angezeigt.

MS Exchange 2010 – Backup mit der Windows Server-Sicherung und Powershell

Soll ein Exchange-Server gesichert werden, passiert das in der Regel z.B. so, dass man ihn mit einem Backup-Agent der zentralen Backuplösung versorgt, den Backupjob anlegt und ein paar Konfigurationen vornimmt.
Hat man diese zentrale Backuplösung nicht, kann man die integrierte Windows Server-Sicherung ab Server 2008 nutzen. Zumindest ab Exchange 2007 SP2, denn erst hier kam das VSS-Plugin (Volume Shadow Copy Service / Schattenkopien) für die Windows Server-Sicherung mit hinzu.
Wie man dann einen zeitgesteuerten Backupjob zusammenklickt, so dass Datenbanken und Logs gesichert werden, findet man schnell im Netz. Das Ergebnis ist dann aber ein Haufen von Dateien und mehreren Verzeichnissen – nicht mehr, so wie vormals, einzelne, .bkf-Dateien.
Wir müssen also noch komprimieren, packen und auf einen Backupserver kopieren. Im Fehlerfall möchten wir natürlich eine Benachrichtigung per E-Mail und ein Logfile. Außerdem soll das Backup der letzten 7 Tage in ein jeweiliges Wochentagsverzeichnis gespeichert werden. Zunächst lokal und dann in eine Freigabe eines Backupservers mit gleicher Ordnerstruktur.
Und da es noch ein paar andere Dinge gibt, die es zu beachten gilt, habe ich mir ein Powershell-Script für das Ganze geschrieben. Damit hat man ein tägliches .zip-File, das das Backup in ein jeweiliges Wochentagsverzeichnis kopiert. Im Fehlerfall (und wenn man möchte, auch im Erfolgsfall), wird man per Mail incl. Logfile benachrichtigt.

Um ZIPpen zu könnnen, habe ich mich für 7-Zip entschieden, was vorher installiert sein muss. Das packen ist Out-Of-The-Box bei der Powershell nur mit einer etwas längeren Codepassage möglich – und das Script ist so schon lang genug ;-). Ansonsten müssten nur die Pfade und ein paar Konstanten angepasst werden, dann sollte es laufen. Achtung wegen Zeilenumbrüchen. Ach ja – es wurde bei mir getestet mit Server 2008 R2 und Exchange-Server 2010 SP3 RU1.

Hier der direkte Download als ZIP: Exchange-daily-backup-official_v13

Update:
Im ZIP-File befindet sich auch eine Textdatei „diskshadow_script.txt“, in der der Laufwerksbuchstabe angepasst werden muss, auf der die Schattenkopien nach erfolgtem Backup aufgeräumt werden sollen. Das entspricht normalerweise der Backuplocation im Kopf des Backupscriptes.
Die Datei muss im selben Verzeichnis liegen, wie das Backup-Script.

Fehler 0x80070643 bei Installation des RU6 für Exchange 2010 SP2

Gestern versucht, RU6 zu installieren. Aktuell ist RU5v2. Es erschien ein Windows-Update Fehler (0x80070643) – übrigens funktionierte auch das Script „StartDAGServerMaintenance.ps1“ in der EMS nicht mehr. D.h. automatischer Wartungsmodus für einen Server, wenn man eine DAG hat, war nicht möglich. Ursache war das vor 4 Wochen per WindowsUpdate herausgebrachte „Windows Management Framework 3.0“, das u.a. die Powershell 3.0 mitbringt und diese wiederum nicht mit Exchange 2010 SP2 RU5v2 zusammenarbeitet. 🙂
Vorgehensweise ist hier, das Update (KB2506146) zu deinstallieren, neu zu starten, dann das RU6 (diesmal erfolgreich) zu installieren. Zuvor kann man übrigens trotzdem das Maintenance-Script benutzen – nur mit der PowerShell 2.0. Einfach eine neue Verknüpfung auf den Desktop legen mit folgendem Ziel:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -version 2 -noexit -command „. ‚C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1‘; Connect-ExchangeServer -auto“

Windows-Versionen für Scripting

Die wohl vollständigste Liste der in Verwendung befindlichen Windows-Versionen, soeben wieder mal um ein Betriebssystem erweitert. 😉

for /f „tokens=1,2,3,4* delims= “ %%i in (‚ver‘) do set version=%%i %%j %%k %%l

if „%version%“ == „Microsoft Windows XP [Version“ (goto XP;)
if „%version%“ == „Microsoft Windows 2000 [Version“ (goto 2000;)
if „%version%“ == „Microsoft Windows [Version 5.2.3790]“ (goto 2003;)
if „%version%“ == „Microsoft Windows [Version 6.0.6000]“ (goto Vista;)
if „%version%“ == „Microsoft Windows [Version 6.0.6001]“ (goto Vista;)
if „%version%“ == „Microsoft Windows [Version 6.0.6002]“ (goto Vista;)
if „%version%“ == „Microsoft Windows [Version 6.1.7600]“ (goto Windows7;)
if „%version%“ == „Microsoft Windows [Version 6.1.7601]“ (goto Win7SP12008R2;)
if „%version%“ == „Microsoft Windows [Version 6.2.9200]“ (goto Windows8;)