Donnerstag, 8. November 2012

Windows:Dateien die älter sind als X Tage per Skript / Batch löschen


1 Variante 1: forfiles

Nein, forfiles kannte ich auch noch nicht, scheint aber seit W2003 / XP dabei zu sein:
Forfiles /P E:\Ordner\ /S /M *.* /D -8 /C "cmd /c del /q @path"

/P E:\Ordner               : Pfad auf dem die Suche gestartet werden soll
/S                         : Bitte mit allen Unterordnern
/M *.*                     : Suchmaske - hier alle Dateien (ausser denen ohne Dateiendung)
/D -8                      : Letztes Änderungsdatum älter als 8 Tage zum heutigen Datum
/C "cmd /c del /q @path"   : Befehl der mit diesen Dateien ausgeführt werden soll (hier löschen)


2 Variante 2: robocopy

Per robocopy schummeln wir - wir verschieben alle älteren Dateien in eine neuen Ordner - den wir dann löschen
mkdir E:\TEMP
robocopy.exe E:\Ordner E:\TEMP /E /MOVE /MINAGE:8 /R:1 /W:1
rmdir E:\TEMP /s /q

mkdir E:\TEMP              : Verzeichnis E:\TEMP erstellen

E:\Ordner                  : Quellordner
E:\TEMP                    : Zielordner
/E                         : inklusive Unterverzeichnisse
/MOVE                      : verschieben statt kopieren
/MINAGE:8                  : Mindestalter, Dateien die jünger als 8 Tage sind werden ignoriert
/R:1                       : Bei Fehler 1x noch mal versuchen
/W:1                       : zwischen Wiederholungen 1 Sekunde warten (bei Fehler)

rmdir E:\TEMP /s /q        : Verzeichnis E:\TEMP inklusive Unterverzeichnissen ohne Nachfrage lösche

Mittwoch, 7. November 2012

Admin Password


das mit /active:yes klappt auch nicht im abgesicherten Modus:

Code:
C:\Users\peter> net user Administrator /active:yes
Systemfehler 5 aufgetreten.

Zugriff verweigert

Im abgesicherten Modus kann ich mich auch nur als nicht privilegierter Benutzer anmelden.

Geschafft habe ich es schließlich, indem ich mittels Linux-Tool chntpw den nicht privilegierten Account zum Admin Account zu machen:

Code:
root@sula:~# chntpw -l /mnt/Windows/System32/config/SAM
chntpw version 0.99.6 080526 (sixtyfour), (c) Petter N Hagen
Hive
name (from header): <\SystemRoot\System32\Config\SAM>ROOT KEY at offset: 0x001020 * Subkey indexing type is: 666c
Page at 0x10000 is not 'hbin', assuming file contains garbage at end
File size 262144 [40000] bytes, containing 7 pages (+ 1 headerpage)
Used for data: 262/54048 blocks/bytes, unused: 16/7168 blocks/bytes.


* SAM policy limits:
Failed logins before lockout is: 0
Minimum password length     : 0
Password history count      : 0
| RID -|---------- Username ------------| Admin? |- Lock? --|
| 03e8 | admin                       | ADMIN  | dis/lock |
| 01f4 | Administrator               | ADMIN  | dis/lock |
| 01f5 | Gast                        |     | dis/lock |
| 03e9 | peter                       |     |       |
Geändert mittels chntpw Kommando:

Code:
root@sula:~# chntpw -u peter /mnt/Windows/System32/config/SAM
chntpw version 0.99.6 080526 (sixtyfour), (c) Petter N Hagen
Hive
name (from header): <\SystemRoot\System32\Config\SAM>ROOT KEY at offset: 0x001020 * Subkey indexing type is: 666c
Page at 0x10000 is not 'hbin', assuming file contains garbage at end
File size 262144 [40000] bytes, containing 7 pages (+ 1 headerpage)
Used for data: 262/54048 blocks/bytes, unused: 16/7168 blocks/bytes.


* SAM policy limits:
Failed logins before lockout is: 0
Minimum password length     : 0
Password history count      : 0
| RID -|---------- Username ------------| Admin? |- Lock? --|
| 03e8 | admin                       | ADMIN  | dis/lock |
| 01f4 | Administrator               | ADMIN  | dis/lock |
| 01f5 | Gast                        |     | dis/lock |
| 03e9 | peter                       |     |       |

---------------------> SYSKEY CHECK <----------------------- font="font">
SYSTEM   SecureBoot         : -1 -> Not Set (not installed, good!)
SAM   Account\F          : 0 -> off
SECURITY PolSecretEncryptionKey: -1 -> Not Set (OK if this is NT4)
Syskey not installed!

RID  : 1001 [03e9]
Username: peter
fullname: peter
comment : 
homedir : 

User is member of 1 groups:
00000221 = Benutzer (which has 3 members)

Account bits: 0x0010 =
[ ] Disabled     | [ ] Homedir req. | [ ] Passwd not req. | 
[ ] Temp. duplicate | [X] Normal account  | [ ] NMS account  | 
[ ] Domain trust ac | [ ] Wks trust act.  | [ ] Srv trust act   | 
[ ] Pwd don't expir | [ ] Auto lockout | [ ] (unknown 0x08)  | 
[ ] (unknown 0x10)  | [ ] (unknown 0x20)  | [ ] (unknown 0x40)  | 

Failed login count: 0, while max tries is: 0
Total  login count: 11

- - - - User Edit Menu:
 1 - Clear (blank) user password
 2 - Edit (set new) user password (careful with this on XP or Vista)
 3 - Promote user (make user an administrator)
(4 - Unlock and enable user account) [seems unlocked already]
 q - Quit editing user, back to user select
Select: [q] > 3
NOTE: This function is still experimental, and in some cases it
   may result in stangeness when editing user/group in windows.
   Also, users (like Guest often is) may still be prevented
   from login via security/group policies which is not changed.
Do you still want to promote the user? (y/n) [n] y
User is member of 1 groups.
User was member of groups: 00000221 =Users, 
Deleting user memberships
Adding into only administrators:
Promotion DONE!

Hives that have changed:
 #  Name
 0  
Write hive files? (y/n) [n] : y
 0  
- OKDie Kontrolle sieht gut aus:

Code:
root@sula:~# chntpw -l /mnt/Windows/System32/config/SAM
chntpw version 0.99.6 080526 (sixtyfour), (c) Petter N Hagen
Hive
name (from header): <\SystemRoot\System32\Config\SAM>ROOT KEY at offset: 0x001020 * Subkey indexing type is: 666c
Page at 0x10000 is not 'hbin', assuming file contains garbage at end
File size 262144 [40000] bytes, containing 7 pages (+ 1 headerpage)
Used for data: 263/54064 blocks/bytes, unused: 18/7152 blocks/bytes.


* SAM policy limits:
Failed logins before lockout is: 0
Minimum password length     : 0
Password history count      : 0
| RID -|---------- Username ------------| Admin? |- Lock? --|
| 03e8 | admin                       | ADMIN  | dis/lock |
| 01f4 | Administrator               | ADMIN  | dis/lock |
| 01f5 | Gast                        |     | dis/lock |
| 03e9 | peter                       | ADMIN  |       |
root@sula:~#
Beim Booten konnte ich mich normal als nichtprivilegierter Benutzer anmelden und dann lies sich eine cmd.exe auch als Administrator ohne zusätzliche Passwort-Abfrage starten. Darin konnte ich dann mit "net uset admin xyz" das Passwort setzen.

Dienstag, 6. November 2012

IP Änderung per CMD

netsh interface ip set address name="LAN-Verbindung" source=static addr=192.168.1.7 mask=255.255.255.0 netsh interface ip set address name="LAN-Verbindung" gateway=192.168.1.254 gwmetric=0 netsh interface ip set dns name="LAN-Verbindung" source=static addr=192.168.1.254 register=PRIMARY

Citrix ICA Configs


[Desktop 2]
DesiredWinType=16
DesiredHPos=2048
DesiredVPos=0
DesiredHRES=1050
DesiredVRES=1680
PreferredLaunchMonitor=1


Bsp.
[WFClient]
Version=2
xxx.xxx.xxx.xxx
ClientName=

[ApplicationServers]
AMEOS Ticketsystem 2011=

[AMEOS Ticketsystem 2011]
DesiredWinType=16
Address=AMEOS Ticketsystem 2011
InitialProgram=#AMEOS Ticketsystem 2011
Compress=On
TWIMode=On
DesiredHPos=0
DesiredVPos=0
DesiredColor=4
DesiredHRES=1280
DesiredVRES=1024
TransportDriver=TCP/IP
WinStationDriver=ICA 3.0
UseLocalUserAndPassword=Off
Domain=HALBERSTADT

Installierte Windows-Drucker mit URL anzeigen


So bekommt man ganz leicht heraus, welche (Netzwerk)-Drucker im aktuellen
Windows hinzugefügt wurden:


Auf Ausführen klicken im Startmenü.
Anschließend "cmd" eingeben und im erscheinenden Fenster dann 


reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices"


Alle gemappten Drucker löschen mit PS:
Get-WMIObject Win32_Printer | where{$_.Network -eq 'true'} | foreach{$_.delete()}

Druckerverwaltung in der Kommandozeile


Die Windows CMD bietet eine brauchbare Druckerverwaltung in der Kommandozeile an.
Dank der printui.dll, die ihr mit der rundll32.exe ansprecht und die alle nötigen Werkzeuge enthält, könnt ihr Drucker hinzufügen, verwaltungen, löschen und mehr.
Dadurch lassen sich bestimmte Jobs wunderbar in Scripte packen.
Code Grundgerüst:
rundll32.exe printui.dll,PrintUIEntry /Parameter
Groß- und Kleinschreibung bei PrintUIEntry beachten, case sensitive.
Nun schauen wir auf die Möglichkeiten von printui.dll.
/a[Datei] Name der Binärdatei
/b[Name] Basisdruckername
/c[Name] UNC-Computername, wenn der Vorgang auf einem Remotecomputer ausgeführt wird.
/dlLöscht den lokalen Drucker.
/dnLöscht die Netzwerkdruckerverbindung.
/ddLöscht
den Druckertreiber.
/eZeigt Druckeinstellungen an.
/f[Datei] Entweder
INF-Datei oder Ausgabedatei.
/gaFügt Druckerverbindungen pro Maschine hinzu.
/geListet Druckerverbindungen pro Maschine auf.
/gdLöscht Druckerverbindungen pro
Maschine.
/h[Arch] Treiberarchitektur Alpha | Intel | Mips | PowerPC.
/iaInstalliert Druckertreiber mithilfe einer INF-Datei.
/idInstalliert
Druckertreiber mithilfe des Assistenten.
/ifInstalliert Drucker mithilfe der
angegebenen INF-Datei.
/iiInstalliert Drucker mithilfe des Assistenten und
einer INF-Datei.
/ilInstalliert Drucker mithilfe des Assistenten.
/inFügt eine Netzwerkdruckerverbindung hinzu.
/j[Anbieter] Druckanbietername
/kDruckt eine
Testseite auf dem angegebenen Drucker aus. Kann bei der Druckerinstallation
nicht verwendet werden.
/l[Pfad] Quellpfad des Druckertreibers
/m[Modell]
Modellname des Druckertreibers
/n[Name] Druckername
/oZeigt die Druckerwarteschlange an.
/pZeigt Druckereigenschaften an.
/qStiller Modus.
Fehlermeldungen werden nicht angezeigt.
/r[Anschluss] Anschlussname (Hier auch
die Möglichkeit Lokale Schnittstellen, anstelle des UNC Pfades anzugeben)
/sZeigt Servereigenschaften an.
/SsSpeichert Druckereinstellungen in einer Datei.
/SrStellt Druckereinstellungen aus einer Datei wieder her. Speichert
Optionsattribute für Druckereinstellungen oder stellt diese wieder her. Die
Attribute müssen am Ende des Befehls  stehen:
2 PRINTER_INFO_2
PRINTER_INFO_7
cFarbprofil
d Druckerdaten
s Sicherheitsbeschreibung
Globaler DevMode
m
Minimale Einstellungen
u Benutzer-DevMode
r Namenskonflikte lösen
f Namen
erzwingen
p Anschluss zuordnen
/uVerwendet den vorhandenen Druckertreiber,
sofern bereits einer installiert ist
/t[#] Nullbasierte Indexseite zum Starten
/v [Version] Eine der folgenden Treiberversionen:
Windows 95 oder 98 | Windows NT 3.1 | Windows NT 3.5 oder 3.51 | Windows
NT 3.51 | Windows NT 4.0 | Windows NT 4.0 oder 2000 | Windows 2000
/wFordert einen Treiber an, wenn der angegebene
Treiber nicht in der INF-Datei gefunden wird.
/yRichtet den Drucker als
Standarddrucker ein.
/XgLiest Druckereinstellungen.
/XsRichtet
Druckereinstellungen ein.
/zGibt diesen Drucker nicht automatisch frei.
/ZGibt diesen Drucker frei. Verwendung nur mit der Option
/if möglich.
/?Zeigt diese Hilfemeldung an.
@[Datei] Datei mit Befehlszeilenargumenten
Die Tabelle ist von Mark Heitbrink von gruppenrichtlinien.de.
Die volle Hilfe, printui.dll /? ist etwas länger, hat viele Beispiele und wen es interessiert: hier als Download.
Beispielszenario:
Man muss allen Mitarbeitern eines Betriebes bestimmte Drucker eines Druckerservers bereitstellen. Das geht zwar auch über Gruppenrichtlinien aber oftmals hat dieser Weg entscheidende Nachteile, wo sich Scripte besser eignen.
Auf dem Server ist ein Druckserver eingerichtet, der Drucker mit allen Treibern (für das Serversystem und alle Clientsysteme (XP+7 32bit+64bit)) installiert und freigegeben.
Druckerinstallation per Netzwerk:
rundll32.exe printui.dll,PrintUIEntry /in /n "\\server\Canon iR400 EG"
/in steht für “install network printer”, /n gibt den Freigabenamen des Druckers (natürlich mit Verbindung des Servernamens) an.
Sollen mehrere Drucker eingerichtet werden empfielt es sich, das Konstrukt etwas auszubauen. Zum Beispiel kann man in dem Script abhängig von der Etage des Mitarbeiters auch gleich den richtigen Standarddrucker setzen lassen (Parameter /y).
Hier mein Scriptbeispiel:
@echo off
cls
 
echo Wo befindet sich Ihr Büro?
echo --------------------------
echo 1 - Erdgeschoss
echo 2 - 1. Obergeschoss
echo 3 - Dachetage
set /p etage=Eingabe (1/2/3): 
if %etage%==1 set drucker=Drucker1
if %etage%==2 set drucker=Drucker2
if %etage%==3 set drucker=Drucker3
 
echo.
echo %drucker% wird als Standarddrucker eingerichtet.
echo.
 
:drucker1
echo Installiere Kopierer EG
if "%etage%"=="1" goto drucker1std
rundll32 printui.dll,PrintUIEntry /in /n "\\iqbserver\Kopierer EG" >> nul
if errorlevel 1 goto drucker1fehler
echo Installation erfolgreich
echo.
goto drucker2
 
:drucker1std
echo Definiere als Standarddrucker
rundll32 printui.dll,PrintUIEntry /in /n "\\server\Kopierer EG" /y >> nul
if errorlevel 1 goto drucker1fehler
echo Installation erfolgreich
echo.
goto drucker2
 
:drucker1fehler
echo Bei der Installation des Kopierer EG ist ein Fehler aufgetreten.
echo.
 
:drucker2
echo Installiere Kopierer 1.OG
if "%etage%"=="2" goto drucker2std
rundll32 printui.dll,PrintUIEntry /in /n "\\server\Kopierer 1.OG" >> nul
if errorlevel 1 goto drucker2fehler
echo Installation erfolgreich
echo.
goto drucker3
 
:drucker2std
echo Definiere als Standarddrucker
rundll32 printui.dll,PrintUIEntry /in /n "\\server\Kopierer 1.OG" /y >> nul
if errorlevel 1 goto drucker2fehler
echo Installation erfolgreich
echo.
goto drucker3
 
:drucker2fehler
echo Bei der Installation des Kopierer 1.OG ist ein Fehler aufgetreten.
echo.
 
REM :drucker3
REM ... und so weiter
Das lässt sich mit beliebig vielen Druckern durchführen, die alle nacheinander auf dem Computer des Mitarbeiters eingerichtet werden. Verbunden mit errorlevel kann man noch cleverer als ich hier reagieren, z.B. den Befehl mit erhöhten Rechten erneut probieren o.Ä. (CPAU Warnung, Nutzung auf eigene Gefahr)
Weitergabe oder Verwendung des Textes nur mit voller Quellen- und Autorangabe! Ich bitte euch, seid fair.