Umgebungsvariable über die CMD erstellen

Unter Windows 7 (und vermutlich auch XP, aber nicht getestet) kann man in der CMS recht simpel Umgebungsvariabeln definieren.
Die Variabeln die man mit set definiert bleiben ja nur, solange man die Session offen hat, wenn man Aber Variabel definieren will die zum einen Länger halten und auch für das komplette System Benutzbar sind, kann man das mit dem Befehl setx machen.
Um eine Umgebungsvariable nur für den aktuellen Benutzer zu erstellen benötigt man keine speziellen Benutzerrechte und kann mit dem folgenden Befehl die Variable erstellen:
setx NAME WERT

Um aber eine Variable für die ganze Maschine zu erstellen muss man Admin-Rechte haben und die CMD auch als Elevated-Process ausführen. Dann kann man ganze einfach mit dem Parameter /M die Variable global erstellen:
setx /M NAME WERT

PDF-Icon in Sharepoint Foundation einbinden

Im Geschäft bin ich gerade ein SharePoint Foundation am installieren bzw. konfigurieren. Eines (der vielen) Probleme ist, dass bei PDF-Dokumenten kein Icon angezeigt wird, was das ganze etwas unübersichtlich macht. Das ganze kann aber recht schnell lösen. Dazu muss man das Icon für auf den Server kopieren und eine XML-Datei anpassen.
http://images.t-error.ch/blog/1379/sharepoint_vorher.jpg

Als erstes kopiert man dazu das PDF-Icon in einer Grösse von 16x16 Pixel auf den Server. Bei meinem Windows 2008 R2 Server, war das der folgende Ordner:
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\TEMPLATE\IMAGES

Dazu kann man das Icon benutzen: http://images.t-error.ch/blog/1379/icpdf.gif

Jetzt muss man noch die Datei DOCICON.XML anpassen, welche in diesem Ordner liegt:
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\TEMPLATE\XML

Der macht fügt man im Abschnitt ByExtension die folgende Zeile hinzu.
<Mapping Key="pdf" Value="icpdf.gif" OpenControl=""/>
Wichtig ist, dass der Dateiname gleich ist, wie der vom Bild.

Nun muss man auf dem Server mit dem Befehl iisreset noch den Webserver neustarten und dann werden die Icons schon angezeigt.
http://images.t-error.ch/blog/1379/sharepoint_nachher.jpg

Das ganze funktioniert natürlich auch mit den Icons von anderen Dateiendungen.

Access-based Enumeration und Windows 2008 R2

Vor bald drei Jahren habe ich mal einen Artikel über Access-based Enumeration bei eine Windows 2003 Server geschrieben.
Letzthin habe ich im Geschäft einen Windows 2008 R2 Fileserver in Betrieb genommen und wollte dort auch wieder ABE einschalten. Das ganze geht nun recht einfach und ohne die Installation von zusätzlicher Software.
Dazu öffnet man eine Management Console (Start -> Ausführen -> MMC) und fügt dort das Snap-in "Share and Storage Management" hinzu. In der Liste wählt man nun den Share, auf dem man die ABE einschalten will und klickt dann auf Advanced. In diesem Fenster kann man nun die ABE einschalten.
http://images.t-error.ch/blog/1325/abe.jpg

Dateien mit zu langem Namen löschen

Letzhin hatte ich wieder das Problem, dass ich eine Datei im Windows nicht löschen konnte, weil der Name zu lang ist. Dann kann man die Datei weder löschen noch umbenennen. Auch in der CMD kommt der folgende Fehler:
Der Dateiname oder die Erweiterung ist zu lang.

Eine Lösung ist den Pfad als separates Laufwerk einzubinden und schon kann man die Datei löschen. Dies geht mit dem Befehl subst.
Zu beachten ist, dass der Pfad am besten in Anführungszeichen geschrieben wird, dann gibt es auch keine Probleme mit Abständen im Pfad. In diesem Beispiel wird der Pfad als Laufwerk s: eingebunden, man kann natürlich jedes nicht benutzte Laufwerk verwenden.
subst s: "pfad"
s:
del "datei"

Die Dateien kann man nun natürlich auch über den Datei-Explorer löschen.
Zum Schluss kann man das Laufwerk wieder aushängen:
subst s: /d

Energieoptionen über die Shell verwalten

Die Energieoptionen in Windows kann man zum einen über Gruppenrichtlinien verwalten, oder auch über die Shell. Das ganze funktioniert mit dem Befehl powercfg. Um zum Beispiel zu konfigurieren nach welcher Zeit der Bildschirm ausgeschaltet wird, gibt man den folgenden Befehl ein:
powercfg -CHANGE Desktop -monitor-timeout-ac 20
Desktop steht hier für das Schema das geändert werden soll. In Windows XP muss dieser Wert angegeben werden, in Windows 7 wird das aktuelle Schema verwendet, wenn dieser Parameter fehlt. -monitor-timeout-ac definiert die Zeit nach der der Bildschirm im Netzbetrieb ausgeschaltet werden soll. Für den Akkubetrieb muss man -monitor-timeout-dc verwenden. Wenn der Bildschirm nicht ausgeschaltet werden soll, kann man 0 als wert angeben. Wenn man will, dass der Bildschirm nach 20 Minuten ausschaltet, die Festplatte und der ganze Computer im weiter läuft, kann man das folgendermassen konfigurieren:
powercfg -CHANGE Desktop -monitor-timeout-ac 20
powercfg -CHANGE Desktop -disk-timeout-ac 0
powercfg -CHANGE Desktop -standby-timeout-ac 0
powercfg -CHANGE Desktop -hibernate-timeout-ac 0

Energieoptionen über Gruppenrichtlinie verwalten

In gewissen Fällen kann es sinnvoll sein, wenn man die Energieoptionen von Windowscomputern zentral über Gruppenrichtlinien verwalten kann. Mit den Bordmitteln von Windows ist das nicht möglich, also muss man auf andere Hilfsmittel zurückgreifen.
Eine Möglichkeit ist der Import eines ADM-Templates in die Gruppenrichtlinie. Dadurch kann man die Energieoptionen dann über die Gruppenrichtlinien verwalten.

http://images.t-error.ch/news/1181/import.jpgDas ADM-template kann man bei Terra Novum herunterladen. Um das Template zu importieren öffnet man den Gruppenrichtlinieneditor, klickt mit der rechten Maustaste auf die Administrativen Vorlagen und dort auf Vorlagen hinzufügen / entfernen. Nun kann man die .adm Datei auswählen und hat die neuen Konfigurationsmöglichgkeiten schon importiert.

Jetzt hat man vier Einstellungen zur Verfügung.
  • Base Options: Die Verwaltung der Enegieoptionen (de)aktivieren
  • Options: Einige Einstellungen
  • AC Profile Scheme: Einstellungen für den Netzbetrieb
  • DC Profile Scheme: Einstellungen für den Batteriebetrieb
Bei den Base Options muss man fast nichts einstellen. Wenn man die Verwaltung der Energieoptionen verwenden will, muss die Einstellung nur Aktivieren, die restlichen Optionen sollte man so belassen wie sie sind.
http://images.t-error.ch/news/1181/base_options.jpg


Bei den Options kann man zum Bsp. konfigurieren, ob die per GPO konfigurierte Richtlinie die Benutzereinstellungen überschreiben soll.
http://images.t-error.ch/news/1181/options.jpg


Schlussendlich gibt es noch die Einstellungen AC- und DC Profile Scheme. Hier konfiguriert man, wie lange es dauert bis der Bildschirm in den Standby geht, die Festplatten ausschalten, oder der ganze Computer in den Standby geht. Die Einstellungen im AC Profile sind für den Netz- und die im DC Profile für den Batteriebetrieb.
http://images.t-error.ch/news/1181/ac.jpg

Ordner mit einem Batch-File leeren

Wer unter Windows XP und aufwärts einen Ordner leeren möchte, wird sicher auf die Befehle del und rd stolpern, dann aber merken, dass keiner der Befehle in der Lage ist einen Ordner nur zu leeren.
Während del nur Dateien und keine Unterordner löscht, löscht rd gleich den ganzen Ordner und nicht nur die Files und Unterordner. So muss man zu einem kleinen Trick und einer Kombination von del und rd greifen.
Das sieht dann so aus:
For /F "Tokens=*" %%i IN ('Dir /AD /B "C:\ordner\"') DO RD /Q /S "c:\ordner\%%~i"
Del /Q /F "c:\ordner\*.*"

Tasks mit "at" planen

Bei Windows kann man Tasks ja bekanntlich über die Geplanten Tasks verwalten. Daneben kann man die Tasks aber auch über die CMD mit dem Befehl "at" verwalten. Ein Aufruf von at /? gibt eine kleine Hilfe aus.
Der grosse Vorteil von at ist in meiner Meinung, dass man so auch Tasks auf andern Computern erstellen kann. Dazu gibt man als ersten Parameter den fremden Computer an und wenn die Berechtigungen stimmen, wird der Task erstellt.
at \\computer 23:30 /every:MO "c:\script.bat"


Wenn man nur den fremden Computer als Parameter angibt, erhält man eine Übersicht mit den Tasks, die über at erstellt wurden.
at \\computer
Status-ID   Tag           Zeit          Befehlszeile
-----------------------------------------------------
        1   Jeden Mo      23:30         c:\script.bat

Alte Dateien mit delage32 löschen

Wir haben bei uns im Geschäft auf dem Server einen Share, welcher als temporäre Dateiablage gedacht ist. Anstatt sich intern grosse Files zuzusenden, kann man die Datei dort ablegen und die andere Person kann sie dort holen. Wie das halt so ist sind die Dateien dort dann aber nicht temporär sonder bleiben einfach dort liegen, weil sie niemand löscht.
Ich habe nun ein kleines Script gemacht, welches Dateien, die älter als 7 Tage sind automatisch löscht. Das Script wird jeden Abend als automatischen Task gestartet. Das Script basiert auf dem Tool delage32 von Horst Schäffer. Damit kann man recht simpel alte Daten löschen.
Meine datei sieht nun so aus:
@echo off
delage32 "D:\GROUP\TEMP\*" 7 /created /includeH /includeRO /recurse /rd

Das funktioniert ganz gut, hat aber leider ein Problem. Wenn eine Datei auf den Share verschoben wird, bleiben die Timestamps vom created und modified gleich wie zuvor. Wenn ich also eine Datei, die ich vor 2 Wochen erstellt habe auf den Share verschiebe, wird sie gleich beim nächsten Start des Scripts gelöscht und nicht nach sieben Tagen, wie es sein sollte. Dagagen kann man aber leider nichts machen und wenn man eine Datei kopiert funktioniert es wieder.

Outlook Signaturen sichern

Wer die Signaturen vom Outlook auf einen neuen Computer kopieren, oder einfach ein Backup davon erstellen will, findet sie im folgenden Ordner:
C:\Windows\Profiles\[user]\Anwendungsdaten\Microsoft\Signatures
In diesem Ordner liegt von jeder Signatur ein Plaintext, ein Richtext und ein Wordfile. Diese Files kann man auf dem neuen Computer kopieren und Outlook erkennt die Signaturen danach automatisch.