Dazugehoerende Dateien
backup.cmd
backup_mssql.sh
backup.sql
restore.cmd
restore_mssql.sh
mysql master slave installieren



auf dem mysql master server muss ein User angelegt werden der folgende Rechte haben muss


mysql> GRANT REPLICATION SLAVE ON artikeltmp.txt bak.html bastel.sh menuetmp.txt test.html wissen.html TO slave@'%.ihredomain.de' IDENTIFIED BY 'ihrPasswort';

Ein Standardmysqlserver ist kein Master Server,folgendes muss in der my.cnf angepasst/hinzugefźgt
werden

[mysqld]
log-bin
server-id=1

log-bin aktiviert das binŠre loging.
server id ist eine binŠr enummer, egal welche eingetragn wird, sollte nur nicht negativ sein


nachdem die my.cnf angepasst wurde, muss der mysql server neu gestartet werden.

anschliessen

FLUSH TABLES WITH READ LOCK;

mysql verzeichniss in tar packen und auf slave kopieren dort wieder entpacken

aktuelle Postion des binary logs wird benštigt, debnn nur mit der Info kann man den Slave
aufsetzen

mit SHOW MASTER STATUS; kann man sich ausgeben lassen wo die bin log postion steht

anschliessend
mysql> unlock tables;
um die tabellen


auf dem slave die my.cnf anpassen
[mysqld]
server-id=2


wenn es mehrere slaves geben sollte dźrfen die server-id nicht doppelt verwendet werden

mysql slave server neustarten

dan folgendes eintragen

mysql> CHANGE MASTER TO
spacer_1px
2
-> MASTER_HOST='NameDesMasters',
spacer_1px
3
-> MASTER_USER='slave',
spacer_1px
4
-> MASTER_PASSWORD='ihrPasswort',
spacer_1px
5
-> MASTER_LOG_FILE='LogFile',
spacer_1px
6
-> MASTER_LOG_POS='offset';


NameDesMasters steht fuer den Namen des Masters, slave fuer den Namen des Accounts
fuer die Replikation und ihrPasswort ist das dazugehoerige Passwort. ueber LogFile
teilen Sie dem Slave den Namen des Binary-Logs des Masters aus dem Snapshot mit -
im Beispiel also database-bin.045 - und ueber offset die Position im Binary-Log,
im Beispiel 14468606.

als letztes ud das muss nur einmal gemacht werden muss der slave betrieb gestartet werden

mysql> START SLAVE;


zusammengefasst von der Seite http://www.tecchannel.de/server/sql/429801/index10.html




oder

mysql master slave zur replikation installieren

1) Server anpassen
a)
auf dem mysql master server muss ein User angelegt werden. der benutzer-account dient später
zur replizierung der daten. foldende rechte sind nötig.

mysql> GRANT REPLICATION SLAVE ON artikeltmp.txt bak.html bastel.sh menuetmp.txt test.html wissen.html TO slave@'%.ihredomain.de' IDENTIFIED BY 'ihrPasswort';

Beispiel:
mysql> grant replication slave on artikeltmp.txt bak.html bastel.sh menuetmp.txt test.html wissen.html to slave@'172.23.23.61' identified by 'root';

b)
Ein Standardmysqlserver ist kein Master Server,folgendes muss in der my.cnf angepasst/hinzugefźgt
werden

[mysqld]
log-bi
server-id=1

net stop dienstname
net start dienstname

Bsp: net stop mysql5

c)
Status anzeigen lassen um den filenamen und offset der bin datei für die datenspeicherung zu ermitteln.
show master status (nach neustart)

file: danielr-bin.000001 position: 98 -> daten werden bei der slave-konfiguration benötigt

2) anpassungen auf slave
a)
auf dem slave die my.cnf anpassen eindeutige id vergeben
[mysqld]
server-id=2

b)
mysql slave server neustarten

c)
slave mit benötigten daten des masters versorgen

mysql> CHANGE MASTER TO
-> MASTER_HOST='NameDesMasters',
-> MASTER_PORT= PORT,
-> MASTER_USER='USERNAME',
-> MASTER_PASSWORD='ihrPasswort',
-> MASTER_LOG_FILE='LogFile',
-> MASTER_LOG_POS='offset';

Bsp:

CHANGE MASTER TO
MASTER_HOST='172.23.23.135',
MASTER_PORT=3307,
MASTER_USER='slave',
MASTER_PASSWORD='root',
MASTER_LOG_FILE='danielr-bin.000005',
MASTER_LOG_POS=98;

anschließend muss der slave gestartet werden

mysql> START SLAVE;
mit show slave status können die werte geprüft werden.


Dazugehoerende Dateien
artikel.txt
Query partially completed on the master (error on master: 1317) and was aborted. There is a chance that your master is inconsistent at this point. If you are sure that your master is ok, run this query manually on the slave and then restart the slave with SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; . Query: 'UPDATE bestellposition_new


Show slave status


Dazugehoerende Dateien
artikel.txt


Dazugehoerende Dateien
artikel.txt
Status abfragen
sestatus

deaktivieren in /etc/selinux/config


Dazugehoerende Dateien
artikel.txt


Dazugehoerende Dateien
hudson.sh
ihudson.sh
in hlkomm-liferay-portal-5.2.2/tomcat-5.5.27/webapps/ROOT/WEB-INF/classes/portal-ext.properties
folgendes eintragen

jdbc.default.driverClassName=com.mysql.jdbc.Driver
jdbc.default.url=jdbc:mysql://localhost/datenbankname?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
jdbc.default.username=
jdbc.default.password=


wenn die Datei nicht vorhanden ist erstellen!!!



in der catalina.sh

JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
JAVA_OPTS="-Djava.awt.headless=true -Xmx512M -server -Dfile.encoding=UTF-8"
CATALINA_HOME=/opt/hlkomm-liferay-portal-5.2.2/tomcat-5.5.27/
CATALINA_PID="$CATALINA_HOME/logs/tomcat.pid"




Dazugehoerende Dateien
artikel.txt
3.1 LVM-System starten

Um die LVM-Funktion des Kernels nutzen zu koennen, ist es notwendig, das Modul lvm-mod zu laden. Dies geschieht mit folgendem Befehl:

modprobe lvm-mod

Die LVM-Kommandos setzen die Datei /etc/lvmtab und das Verzeichnis /etc/lvmtab.d voraus, die man vorher mit dem Befehl vgscan erstellen kann. Die beiden Dateien beinhalten Informationen ueber die vorhandene LVM-Konfiguration. Mit dem Befehl vgchange werden eventuelle Volume Groups aktiviert. Bei vielen Distributionen werden die beiden folgenden Befehle waehrend des Systemstarts ausgefuehrt und sind damit nicht unbedingt notwendig. Sehen Sie dazu auch den Abschnitt LVM beim Booten und Shutdown.

vgscan -v
vgchange -a y

3.2 LVM-System einrichten

Physical Volume einrichten

Das LVM-System basiert auf drei Stufen: dem Physical Volume, der Volume Group und dem Logical Volume. Genauere Beschreibungen dieser und anderer Begriffe werden im Abschnitt Fachbegriffe erlaeutert.

Als erstes muessen Sie eine bestehende Partition mit der Partitions-ID »8e« fuer LVM kennzeichnen. Dazu fuehren Sie als Benutzer root cfdisk gefolgt mit der Angabe der betreffenden Festplatte aus. cfdisk ist eine komfortablere Variante von fdisk.

cfdisk /dev/hdb

Danach waehlt man mit den Cursortasten vertikal die gewuenschte Partition, wie zum Beispiel /dev/hdb5, und danach horizontal die Option »Type« um die Partitions-ID »8e« festzulegen. Mit der Option »Write« werden die Änderungen in der Partitionstabelle eingetragen.

Danach kann auf dieser Partition ein Physical Volume einrichtet werden. Die LVM-Kommandos setzen die Dateien /etc/lvmtab und /etc/lvmtab.d voraus, die man gegebenenfalls mit dem Befehl

vgscan -v

erstellen kann. Mit dem Befehl

pvcreate /dev/hdb5

kann dann das Physical Volume erstellt werden. Theoretisch waere eine Volume Group auch mit nur einem Physical Volume moeglich, hier erstellen wir jedoch noch eine zweite, die wir spaeter in der Volume Group zusammenfuegen.

pvcreate /dev/hdb6

Voraussetzung ist natuerlich wieder, dass diese Partition die ID »8e« hat.

Volume Group einrichten

Die Volume Group stellt eine Art Speicherpool dar, aus der man eine oder mehrere Logical Volumes, also virtuelle Partitionen, erstellen kann. Zusaetzlich zum Kommando vgcreate und den Physical Volumes muss der gewuenschte Name, hier volg1, der Volume Group angegeben werden:

vgcreate volg1 /dev/hdb5 /dev/hdb6

Danach befindet sich im Verzeichnis /dev das neue Unterverzeichnis volg1 fuer die betreffende Volume Group.

Logical Volume einrichten

Nun kann man mit der gesamten Volume Group volg1, oder auch nur mit einem Teil davon ein Logical Volume erstellen. Zum Kommando lvcreate muss man die gewuenschte Groesse, den Namen von dem Logical Volume und die Volume Group angeben. Hier wird der Name logv1 und die Groesse 1000 MByte verwendet:

lvcreate -n logv1 -L 1000M volg1
oder fuer den gesamten freien Festplattenplatz
lvcreate -n logv1 -l +100%FREE volg1

Damit wird die neue Device-Datei /dev/volg1/logv1 erstellt, ueber die man auf die virtuelle Partition zugreifen kann. Genau nach dem gleichen Verfahren wie etwa auf die gewoehnliche Partition /dev/hda1.

Um auf dieser Partition auch Daten abspeichern zu koennen, ist auch hier ein Dateisystem wie ext2 oder reiserfs erforderlich.

mkfs -t ext2 /dev/volg1/logv1

Das Dateisystem wird dann ueber ein Verzeichnis in den Verzeichnisbaum eingehaengt.

mkdir /lvm-test
mount -t ext2 /dev/volg1/logv1 /lvm-test

Nun koennen Sie im neu erstellten Verzeichnis /lvm-test Daten abspeichern. Bei Bedarf koennen sie mit umount die Partition auch wieder aus dem Verzeichnisbaum aushaengen.

umount /lvm-test

3.3 LVM-System vergroessern und verkleinern

Logical Volume vergroessern und verkleinern

Wie schon gesagt laesst sich mit LVM eine Partition nachtraeglich vergroessern und auch verkleinern. Moechte man das zuvor angelegte Logical Volume mit der Groesse von 1000 MByte vergroessern, kann man dies mit lvextend erledigen. Dazu gibt man einfach die neue Groesse mit der Option -L direkt an. Alternativ koennte man auch mit -L+300M die neue Groesse relativ zur bestehenden Groesse angeben. Aufgrund der Groesse von 4 MByte der Physical Extents, koennen die tatsaechlisch erzeugten Groessen der Logical Volumes etwas abweichen, da die erzeugten Logical Volumes damit immer nur ein Vielfaches von 4 MByte gross sein koennen. Um diese Abweichung zu umgehen, koennen Sie beim Anlegen einer Volume Group die Groesse der Physical Extents explizit kleiner angeben. Sehen Sie dazu auch den Abschnitt Volume Group mit spezieller PE-Groesse.

lvextend -L 1300M /dev/volg1/logv1

Jetzt wurde erst die virtuelle Partition, also das Logical Volume vergroessert. Zusaetzlich muss man nun auch das darin enthaltene Dateisystem vergroessern. Zuvor muss es allerdings mit umount aus dem Verzeichnisbaum entfernt und noch mit e2fsck auf Fehler ueberprueft werden:

umount /lvm-test
e2fsck -f /dev/volg1/logv1
resize2fs /dev/volg1/logv1
mount -t ext2 /dev/volg1/logv1 /lvm-test

Umgekehrt koennen Sie mit resize2fs das Dateisystem auch verkleinern, indem Sie die neue Groesse in Bloecken (per Default 1024 Byte) angeben. Im Beispiel wird das Logical Volume auf 500 MByte verkleinert. Beachten Sie unbedingt, dass Sie erst das Dateisystem und danach das Logical Volume mit lvreduce verkleinern. Wuerden Sie erst das Logical Volume mit lvreduce verkleinern, gehen die darin enthaltenen Daten verloren.

umount /lvm-test
e2fsck -f /dev/volg1/logv1
resize2fs /dev/volg1/logv1 512000
lvreduce -L-800M /dev/volg1/logv1
mount -t ext2 /dev/volg1/logv1 /lvm-test

Um komfortabler zu arbeiten, gibt es das Kommando e2fsadm, das alle vorher beschriebenen Schritte wie lvextend, lvreduce, e2fsck und resize2fs zusammen ausfuehrt. Wie der Name schon andeutet, funktioniert das Programm nur bei dem Dateisystem ext2. Falls das Programm nicht in Ihrer Distribution enthalten ist, koennen Sie es unter

http://e2fsprogs.sourceforge.net/

downloaden. Das folgende Kommando vergroessert zum Beispiel das Logical Volume auf 800 MByte. Zuvor muss es allerdings wieder mit umount ausgehaengt werden:

umount /lvm-test
e2fsadm -L 800M /dev/volg1/logv1
mount -t ext2 /dev/volg1/logv1 /lvm-test

Bei der Verkleinerung verfaehrt man in gleicher Weise:

umount /lvm-test
e2fsadm -L 500M /dev/volg1/logv1
mount -t ext2 /dev/volg1/logv1 /lvm-test

Volume Group vergroessern und verkleinern

Da auch der Speicherplatz der Volume Group irgendwann belegt ist und man damit kein Logical Volume mehr anlegen oder vergroessern kann, ist es moeglich, auch eine Volume Group mit dem Befehl vgextend zu vergroessern. Man muss nur eine beliebige freie Partition wie in Abschnitt Physical Volume einrichten als Physical Volume einrichten und es der Volume Group zufuegen.

pvcreate /dev/hdb7
vgextend volg1 /dev/hdb7

Mit vgdisplay kann man sich dann die neue Groesse ansehen:

vgdisplay /dev/volg1

Moechte man eine Volume Group verkleinern, kann man mit dem Befehl

vgreduce -a volg1

alle freien Physical Volumes aus der Volume Group entfernen. Um ein bestimmtes Physical Volume zu entfernen, muss man dessen genauen Pfad angeben. Vorher kann man, falls erwuenscht, mit dem Befehl pvdisplay -v ueberpruefen, ob das betreffende Physical Volume Daten enthaelt oder nicht.

pvdisplay -v /dev/hdb7
vgreduce volg1 /dev/hdb7

Voraussetzung ist immer, dass auf dem betreffenden Physical Volume keine Daten enthalten sind. Mit dem Kommando pvmove kann man vorher gegebenenfalls die Daten auf ein anderes Physical Volume verschieben. Sehen Sie dazu auch den Abschnitt Daten von einem PV zum anderen PV verschieben.

3.4 LVM-System beenden

Um das LVM-System ordungsgemaess zu beenden, muessen Sie alle Logical Volumes mit umount aus dem Verzeichnisbaum aushaengen und danach vgchange ausfuehren:

umount /lvm-test
vgchange -a n

Am komfortabelsten ist es, die Befehle fuer das Starten und Beenden des LVM-Systems innerhalb des Init-V-Prozesses einzubinden, um nicht immer manuell nach dem Systemstart das LVM-System zu aktivieren. Sehen Sie dazu auch den Abschnitt LVM beim Booten und Shutdown.






Dazugehoerende Dateien
artikel.txt
unmounten !!!!

Platte vergrößern


Physikalisches Volume vergößern
pvresize /dev/sdx


lvresize -L +20G /dev/VolGroup01/LogVol01


e2fsck -f /dev/VolGroup01/LogVol01


resize2fs e2fsck -f /dev/VolGroup01/LogVol01







mounten





Dazugehoerende Dateien
artikel.txt

dvds abspielen




mplayer dvd:// [-dvd-device ]


Beispiel:

mplayer dvd://1 -dvd-device /dev/hdc


Die Zahl steht fuer den Kapitel


ESC Wiedergabe beenden
Leertaste Wiedergabe Pausieren
Pfeil rechts 10 Sekunden vor springen
Pfeil links 10 Sekunden zurueck springen
Pfeil hoch 1 Minute vor springen
Pfeil runter 1 Minute zurueck springen
Bild hoch 10 Minuten vor springen
Bild runter 10 Minuten zurueck springen
0 Lautstaerke erhoehen
9 Lautstaerke verringern
M Audioausgabe de- & aktivieren
F Vollbildanzeige de- & aktivieren
# Audiospur wechseln
J Untertitel wechseln
O On-Screen-Display wechseln


Dazugehoerende Dateien
artikel.txt


Für die Installation von MRTG wird ein fertig konfigurierter Apache Webserver mit PHP4 vorrausgesetzt.
Sollte dies nicht der Fall sein, so kann man dies mit folgender Kommandozeile beheben:

apt-get install apache2 php4 libapache2-mod-php4 php4-cli php4-common php4-cgi

Die Installation von MRTG selbst unter Debian oder auch Ubuntu gestaltet sich recht einfach.
Dazu laden wir als erstes die benötigten Pakete:

apt-get install mrtg snmpd

Nach der Installation der Pakete editieren wir die Datei “/etc/mrtg.cfg”:

nano /etc/mrtg.cfg

Und ändern den Teil von Global Settings auf:

# Global Settings

RunAsDaemon: yes
EnableIPv6: no
WorkDir: /var/www/mrtg
Options[_]: bits,growright
WriteExpires: Yes

Danach muss die Datei “/etc/snmp/snmpd.conf” editiert werden:

nano /etc/snmp/snmpd.conf

wo wir folgendes hinzufügen/abändern:

# sec.name source community
com2sec readonly default public

Danach werden die Konfigurationsdatein geladen und der Index im /var/www/mrtg erstellt
und zu guter Letzt der snmp Dienst neugestartet:

cfgmaker public@localhost > /etc/mrtg.cfg
indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html
/etc/init.d/snmpd restrat

Nach einem Neustart der Maschine wird unter “http:///mrtg/ alle 5 Minuten die Statistik
vom eth0 (Netzwerkinterface) aktualisiert. Der Cronjob wird automatisch angelegt und lässt
sich per “cat /etc/cron.d/mrtg” überprüfen.




Target[localhost.root]:dskTotal.1&dskUsed.1:public@localhost 1 artikeltmp.txt bak.html bastel.sh daten inc menuetmp.txt test.html wissen.html 1000
RouterUptime[localhost.root]: public@localhost
MaxBytes[localhost.root]: 384497868000
Title[localhost.root]: DISK USAGE
PageTop[localhost.root]:

Disk Usage /


Unscaled[localhost.root]: ymwd
ShortLegend[localhost.root]: B
YLegend[localhost.root]: DISK Utilization
Legend1[localhost.root]: Total
Legend2[localhost.root]: Used
Legend3[localhost.root]:
Legend4[localhost.root]:
LegendI[localhost.root]: Total
LegendO[localhost.root]: Used
Options[localhost.root]: growright,gauge,nopercent

Target[localhost.backups]:dskTotal.2&dskUsed.2:public@localhost 1 artikeltmp.txt bak.html bastel.sh daten inc menuetmp.txt test.html wissen.html 1024
RouterUptime[localhost.backups]: public@localhost
MaxBytes[localhost.backups]: 2014376488000
Title[localhost.backups]: DISK USAGE
PageTop[localhost.backups]:

Disk Usage /backups


Unscaled[localhost.backups]: ymwd
ShortLegend[localhost.backups]: B
YLegend[localhost.backups]: DISK Utilization
Legend1[localhost.backups]: Total
Legend2[localhost.backups]: Used
Legend3[localhost.backups]:
Legend4[localhost.backups]:
LegendI[localhost.backups]: Total
LegendO[localhost.backups]: Used
Options[localhost.backups]: growright,gauge,nopercent



Moinsen, leider habe ich über google keinen Lösungsansatz gefunden deswegen hier der Post.

Ich habe mrtg und snmp eingerichtet und mir mit hilfe von
cfgmaker public@localhost > /etc/mrtg.cfg
indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html
/etc/init.d/snmpd restrat

wurde mir dann auch der Traffic für die eth1 Netzwerkkarte angezeigt.

Nun wollte ich noch cpu, Festplatte mit darstellen lassen nur so recht will das nicht laufen.

habe es wie folgt eingebunden
Target[localhost.tmp]:dskTotal.4&dskUsed.4:public@localhost 1 artikeltmp.txt bak.html bastel.sh daten inc menuetmp.txt test.html wissen.html 1000
RouterUptime[localhost.tmp]: public@localhost
MaxBytes[localhost.tmp]: 43647056
Title[localhost.tmp]: DISK USAGE
PageTop[localhost.tmp]:

Disk Usage /srv


Unscaled[localhost.tmp]: ymwd
ShortLegend[localhost.tmp]: Gbyte
YLegend[localhost.tmp]: DISK Utilization
Legend1[localhost.tmp]: Total
Legend2[localhost.tmp]: Used
Legend3[localhost.tmp]:
Legend4[localhost.tmp]:
LegendI[localhost.tmp]: Total
LegendO[localhost.tmp]: Used
Options[localhost.tmp]: growright,gauge,nopercent


aber mir wurde nichts ausgegeben.

in der snmpd.conf habe ich ich eingeragen disk /srv 10%





Dazugehoerende Dateien
artikel.txt

ssl Zertifikat



./check_http -H crm.hmmh.de --ssl -C 1000 -f follow


-H gibt den Host an

--ssl aktiviert ssl

-C zeit fuer die warnung

-f follow leitet Zb automatisch von http Seiten auf https Seiten

laufendes Programm pruefen


check_nt -H d3-ocr.hmmh.ag -p 12489 -v PROCSTATE -d SHOWALL -l "dtiffsvr.exe"

check swap



command[check_swap]=/usr/lib/nagios/plugins/check_swap -w 90% -c 50%


Dazugehoerende Dateien
artikel.txt
blacklist.sh
check_cpu.sh
check_memory.sh
check_printer.php
check_swap
check_swraid
check_traffic2.sh
checkWebsites.sh


Dazugehoerende Dateien
ldap.php

ssfhs




der Benutzer mit dem sshfs genutzt werden soll muss mit in der Gruppe fuse sein.

fusessh ist ein Beispielordner


mkdir ~/fusessh
sshfs Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh


um die Verbindung wieder entfernen

fusermount -u ~/fusessh



Dazugehoerende Dateien
artikel.txt
artikel.txt~
apt-get install subversion libapache2-svn

Verzeichniss erstellen für repository
mkdir -p /var/svn/
repository erstellen
svnadmin create /var/svn/

Verzeichniss für trac erstellen
mkdir /var/trac/

erstes einlesen durch trac
trac-admin /var/trac/ initenv
=> ein setup wird gestartet die fragen müssen beantwortet werden

der www-data user muss der besitzer der ordner fürs trac und fürs svn sein
chown -R www-data:www-data /var/trac/
chown -R www-data:www-data /var/svn/

config für apache2 vhost
Um die Benutzerrechteverwaltung zu vereinfachen wurde hier mit Gruppen gearbeitet

>
DAV svn
SVNPath /var/svn/
AuthType Basic
AuthName "Subversion"
AuthUserFile /etc/apache2/svnuser.passwd
AuthGroupFile /etc/apache2/svngroup.passwd
Require group


>
AuthType Basic
AuthName "Subversion"
AuthUserFile /etc/apache2/svnuser.passwd
AuthGroupFile /etc/apache2/svngroup.passwd
Require group
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonPath "sys.path + ['/usr/share/trac']"
PythonOption TracEnv /var/trac/
PythonOption TracUriRoot /trac/



Aufbau svnuser.passwd
hermann:JCHv3BD0iMi.o
mip:aB6IKjlJWW3mA
cwm:76doehSNd1d26


Aufbau svngroup.passwd

mip: hermann mip
cwm: hermann cwm



Backups

backup erstellen
svnadmin dump /var/local/svn/ > dumpfile

backup wieder einspielen
svnadmin load /var/local/svn/ < dumpfile




Weitere Abläufe

Verzeichnisstruktur erstellen

mkdir -p /tmp/projekt1/trunk //Hauptast des Projektes
mkdir -p /tmp/projekt1/tags //Entwicklungszweige
mkdir -p /tmp/projekt1/branches //speicherung von Entwicklungsständen

bereits erstllte daten müssen in das trunk Verzeichniss kopiert werden
cp -R /projekt_ohne_svn/* /tmp/projekt1/trunk

Projekt in Subversion importieren:
svn import /tmp/projekt1 http://localhost/svn/projekt1 -m "initialer Import"
bzw mit Benutzer
svn import /tmp/projekt1 http://localhost/svn/projekt1 -m "initialer Import" --username ein-Nutzer

weitere Befehle

svn checkout http://localhost/svn/projekt1/trunk/ /home/user/projekt1 #checkt trunk-Zweig von projekt1 aus
svn diff #zeigt die Unterschiede an
svn ci -m "Kommentar" #die Arbeitskopie wird auf den Server übertragen
svn update #damit wird die Arbeitskopie dem Server angepasst
svn help #Hilfe



zwischen hier können die rechte noch genauer mit vergeben werden, welcher branch etc
AuthzSVNAccessFile conf/all.authz


aufbau der authz datei
[repo:pfad]

[groups]
hmmh = heino.niemann,sven.thoden


[svn-hmmh:/]
1 artikeltmp.txt bak.html bastel.sh daten inc menuetmp.txt test.html wissen.html =
@hmmh = rw

[svn-hmmh:/bfriends]
sven.thoden = r




PROBLEM

Unter ubuntu amd64 gibt es probleme mit python, wenn http://mathiasson.nu/debian/pool/main/c/clearsilver/python-clearsilver_0.10.4-1.0pm0_amd64.deb installiert wird läuft trac aber


Dazugehoerende Dateien
artikel.txt
svn-book.pdf


Dazugehoerende Dateien
testdisk-6.11.3.linux26.tar.bz2
Nur bestimmte IP Adressen dürfen auf den Tomcat zugreifen


Allow="80.228.246.172"/>




Es muss kein deny="*" vorangestellt werden



Dazugehoerende Dateien
artikel.txt


Dazugehoerende Dateien
backup.sh
folders.txt


Dazugehoerende Dateien
wasserzeichen.sh
wasserzeichen.sh~


Dazugehoerende Dateien
vdrc.sh


Dazugehoerende Dateien
progausrechneraus.sh


Dazugehoerende Dateien
dokumente.sh
Zufalls Passwort mit der Shell generieren


passwort=`< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c8`
echo $passwort



Dazugehoerende Dateien
artikel.txt
artikel.txt~
C:cygwinbinbash --login -i -c c:/bin/nords.sh


Dazugehoerende Dateien
artikel.txt
artikel.txt~


Dazugehoerende Dateien
backup.cmd
backup_mssql.sh
backup.sql
restore.cmd
restore_mssql.sh
"identity","streetaddress","city","postalcode","company","department","office","officephone","MobilePhone","fax","CustomAttribute1","manager"
"hermann.schmidt","Escherweg 3","Oldenburg","26121","hmmh multimediahaus AG","System Administration","hmmh System Administration","OL 451 / HB 165","+49 15 20 / 89 68 792","+49 4 41 / 80 01 -111","11.06.1900","heino.niemann"



PS C:UsersAdministrator> Import-Csv C:Usershermann.schmidtDesktopdaten.csv |Foreach { Set-ADUser -Identity $_.Identity -StreetAddress $_.streetaddress
-city $_.city -postalcode $_.postalcode -company $_.company -Department $_.department -Manager $_.manager-OfficePhone $_.officephone -Fax $_.fax -MobilePhone $_.MobilePhone }


http://technet.microsoft.com/en-us/library/ee617241.aspx

http://technet.microsoft.com/de-de/library/ee617215%28en-us%29.aspx



Die "" sind nicht notwendig, damit ö ä ü sauber importiert werden, muss die csv Datei als unicode gespeichert werden

PS C:UsersAdministrator> $datum=Get-Date -format dd.MM.yyyy ; Import-Csv C:Usershermann.schmidtDesktopimport*.csv |Foreach { Set-ADUser -Identity $_.Identity -StreetAddress $_.streetaddress -city $_.city -postalcode $_.postalcode -company $_.company -Department $_.department -Manager $_.manager -OfficePhone $_.officephone -Fax $_.fax -MobilePhone $_.MobilePhone ; echo "$? $_.Identity" >> c:usershermann.schmidtDesktoplogs$datum.log } ; Move-Item C:Usershermann.schmidtDesktopimport*.csv C:Usershermann.schmidtDesktopdone



Mit Hilfe der Powershell können auch E-Mails mit oder ohne Dateianhang (Attachment) versendet werden. Soll eine E-Mail ohne Anhang versendet werden, kann auf die Zeilen $filename, $att und $mailmessage.Attachments.Add($att) verzichtet werden.

function sendmail($body)
{
$filename = "Pfad zum Dateianhang"
$SmtpClient = new-object system.net.mail.smtpClient
$MailMessage = New-Object system.net.mail.mailmessage
$att = new-object Net.Mail.Attachment($filename)
$SmtpClient.Host = "Name des Mailservers"
$mailmessage.from = "Absenderadresse"
$mailmessage.To.add("Empfängeradresse")
$mailmessage.Subject = “Betreff der Nachricht”
$MailMessage.IsBodyHtml = $true
$mailmessage.Body = $body
$mailmessage.Attachments.Add($att)
$smtpclient.Send($mailmessage)
}

$body = "Irgendein Text oder der Inhalt einer Variable"
sendmail $body


Standart AD Werte

$datum=Get-Date -format dd.MM.yyyy ; Import-Csv C:Usershermann.schmidtDesktopimport*.csv |Foreach { Set-ADUser -Identity $_.Identity -StreetAddress $_.streetaddress -city $_.city -postalcode $_.postalcode -company $_.company -Department $_.department -Office $_.office -Manager $_.manager -OfficePhone $_.officephone -Fax $_.fax -MobilePhone $_.MobilePhone ; echo "$? $_.Identity" >> c:usershermann.schmidtDesktoplogs$datum.log } ; Move-Item C:Usershermann.schmidtDesktopimport*.csv C:Usershermann.schmidtDesktopdone

CustomAttribute1 fuer exchange
$datum=Get-Date -format dd.MM.yyyy ; Import-Csv C:Usershermann.schmidtDesktopimport*.csv |Foreach { Set-Mailbox -Identity $_.Identity -CustomAttribute1 $_.CustomAttribute1 ; echo "$? $_.Identity" >> c:usershermann.schmidtDesktoplogs$datum.custom.log } ; Move-Item C:Usershermann.schmidtDesktopimport*.csv C:Usershermann.schmidtDesktopdone

beides gleichzeitig
$datum=Get-Date -format dd.MM.yyyy ; Import-Csv C:Usershermann.schmidtDesktopimport*.csv |Foreach { Set-ADUser -Identity $_.Identity -StreetAddress $_.streetaddress -city $_.city -postalcode $_.postalcode -company $_.company -Department $_.department -Office $_.office -Manager $_.manager -OfficePhone $_.officephone -Fax $_.fax -MobilePhone $_.MobilePhone ; echo "$? $_.Identity" >> c:usershermann.schmidtDesktoplogs$datum.log ; Set-Mailbox -Identity $_.Identity -CustomAttribute1 $_.CustomAttribute1 ; echo "$? $_.Identity" >> c:usershermann.schmidtDesktoplogs$datum.custom.log } ; Move-Item C:Usershermann.schmidtDesktopimport*.csv C:Usershermann.schmidtDesktopdone





Dazugehoerende Dateien
artikel.txt

Die AD-Commandlets (kurz Cmdlets) die zur Verfuegung stehen



Die Cmdlets sind durch ihre Namen weitestgehend selbsterklaerend. Die unten aufgefuehrten Cmdlets kann man sich mit dem Befehl get-command anzeigen lassen, wie z.B. get-command get-ad*, get-command new-ad* oder get-command remove-ad* usw. Alle AD-Cmdlets werden mit diesem Befehl angezeigt: Get-Command *-ad*

Eine ausfuehrliche und detaillierte Hilfe zu den folgenden Cmdlets laesst sich wie folgt anzeigen:

- Get-Help -Detailed (z.B. Get-Help Search-ADAccount -Detailed)
- Get-Help -Examples
- Get-Help -Full


Die Hilfe zu den Filtermoeglichkeiten laesst sich mit diesem Befehl aufrufen:
get-help about_ActiveDirectory_Filter



AD-Objekte abrufen (22 Cmdlets)

- Get-ADAccountAuthorizationGroup
- Get-ADAccountResultantPasswordReplicationPolicy
- Get-ADComputer
- Get-ADComputerServiceAccount
- Get-ADDefaultDomainPasswordPolicy
- Get-ADDomain
- Get-ADDomainController
- Get-ADDomainControllerPasswordReplicationPolicy
- Get-ADDomainControllerPasswordReplicationPolicyUsage
- Get-ADFineGrainedPasswordPolicy
- Get-ADFineGrainedPasswordPolicySubject
- Get-ADForest
- Get-ADGroup
- Get-ADGroupMember
- Get-ADObject
- Get-ADOptionalFeature
- Get-ADOrganizationalUnit
- Get-ADPrincipalGroupMembership
- Get-ADRootDSE
- Get-ADServiceAccount
- Get-ADUser
- Get-ADUserResultantPasswordPolicy



AD-Objekte erstellen (7 Cmdlets)

- New-ADComputer
- New-ADFineGrainedPasswordPolicy
- New-ADGroup
- New-ADObject
- New-ADOrganizationalUnit
- New-ADServiceAccount
- New-ADUser



AD-Objekte entfernen (12 Cmdlets)

- Remove-ADComputer
- Remove-ADComputerServiceAccount
- Remove-ADDomainControllerPasswordReplicationPolicy
- Remove-ADFineGrainedPasswordPolicy
- Remove-ADFineGrainedPasswordPolicySubject
- Remove-ADGroup
- Remove-ADGroupMember
- Remove-ADObject
- Remove-ADOrganizationalUnit
- Remove-ADPrincipalGroupMembership
- Remove-ADServiceAccount
- Remove-ADUser



AD-Schreibvorgaenge durchfuehren (15 Cmdlets)

- Set-ADAccountControl
- Set-ADAccountExpiration
- Set-ADAccountPassword
- Set-ADComputer
- Set-ADDefaultDomainPasswordPolicy
- Set-ADDomain
- Set-ADDomainMode
- Set-ADFineGrainedPasswordPolicy
- Set-ADForest
- Set-ADForestMode
- Set-ADGroup
- Set-ADObject
- Set-ADOrganizationalUnit
- Set-ADServiceAccount
- Set-ADUser



AD-Objekte hinzufuegen (5 Cmdlets)

- Add-ADComputerServiceAccount
- Add-ADDomainControllerPasswordReplicationPolicy
- Add-ADFineGrainedPasswordPolicySubject
- Add-ADGroupMember
- Add-ADPrincipalGroupMembership


AD-Objekte und optionale AD-Funktionen deaktivieren (2 Cmdlets)

- Disable-ADAccount
- Disable-ADOptionalFeature



AD-Objekte und optionale AD-Funktionen aktivieren (2 Cmdlets)

- Enable-ADAccount
- Enable-ADOptionalFeature



AD-Objekte verschieben (3 Cmdlets)

- Move-ADDirectoryServer
- Move-ADDirectoryServerOperationMasterRole
- Move-ADObject



AD-Objekte umbenennen (1 Cmdlet)

- Rename-ADObject



AD-Dienstkontenkennwoerter zuruecksetzen (1 Cmdlet)

- Reset-ADServiceAccountPassword




AD-Objekte wiederherstellen (1 Cmdlet)

- Restore-ADObject



AD-Objekte suchen (1 Cmdlet)

- Search-ADAccount



AD-Dienstkonto deinstallieren (1 Cmdlet)

- Uninstall-ADServiceAccount



AD-Objekt entsperren (1 Cmdlet)

- Unlock-ADAccount



AD-Kontoablaufdatum zuruecksetzen (1 Cmdlet)

- Clear-ADAccountExpiration



AD-Dienstkonto installieren (1 Cmdlet)

- Install-ADServiceAccount





AD-PowerShell „Benutzerobjekt“ Befehle

Mit dem Cmdlet Get-ADUser lassen sich Benutzerinformationen abfragen. Je nach Angabe der Suchkriterien werden bei der Abfrage ein oder mehrere Benutzerobjekte mit den gewuenschten Attributen angezeigt. Mit dem Befehl Get-ADUser Yusuf werden standardmaessig die folgenden Werte angezeigt: DistinguishedName, Enabled, givenName, Name, ObjectClass, ObjectGUID, SamAccountName, ObjectSID, Surname, userPrincipalName

Bei allen PowerShell-Befehlen kann bei der Angabe von zwischen den folgenden Angaben gewaehlt werden:

- sAMAccountName
- Distinguished Name (DN)
- ObjectSID
- ObjectGUID

Die Abfrage Get-ADUser „CN=Yusuf,OU=IT,DC=blog,DC=dikmenoglu,DC=de“, Get-ADUser S-1-5-21-2225156702-1871195563-4034089934-1101 oder Get-ADUser 6e90b6c6-0fc6-4aab-af7f-73b74f937980liefern alle das gleiche Ergebnis.


Hinweis: Um die Funktion der Befehle sicherzustellen, ist es empfehlenswert die Befehle haendisch einzutippen anstatt sie zu kopieren!


# Soll sich die Abfrage auf eine bestimmte OU (samt Unter-OUs) beschraenken, so kann das mit dem Parameter –Searchbase und der Angabe des DN der OU durchgefuehrt werden.
Get-ADUser –LDAPFilter „(givenName=Yusuf)“ –SearchBase „OU=IT,DC=Domaene,DC=de“


# Zum Erhoehen der Suchleistung sollte man den Suchbereich auf ein einziges Objekt oder auf eine Objektteilmenge beschraenken. Fuer diese Aufgabe stellt die DirectorySearcher-Klasse die SearchScope-Eigenschaft bereit. Der Suchbereich laesst sich auf eine der folgenden drei Einstellungen festlegen:

- Base: Hier wird das Objekt durchsucht, mit dem man verbunden ist. Wenn man sich z.B. mit einer OU verbunden hat, wird nur diese eine OU durchsucht und nicht noch zusaetzlich die evtl. bestehenden Unter-OUs.

- OneLevel: Mit dieser Option werden alle Objekte die sich direkt, also eine Ebene tiefer, unter der Suchbasis befinden durchsucht.

- Subtree: Durchsucht alle Objekte, die in der Teilstruktur des verbundenen Objekts enthalten sind. Dabei werden alle Container im aktuellen Pfad und unterhalb der Suchbasis durchsucht.


Mit der Angabe des Parameters –SearchScope, laesst sich die Abfrage im vorherigen Beispiel ausschliesslich auf die angegebene OU beschraenken:
Get-ADUser –LDAPFilter „(givenName=Yusuf)“ –SearchBase „OU=IT,DC=Domaene,DC=de“ –SearchScope OneLevel

# Welche Benutzerkontoeigenschaften angezeigt werden, laesst sich mit dem Parameter –Properties beeinflussen. Wird beim Parameter –Properties als Wert ein Wildcard „*“ verwendet, so lassen sich alle Benutzerkontoeigenschaften anzeigen die im Benutzerobjekt enthalten sind:
Get-ADuser -Properties 1 artikeltmp.txt bak.html bastel.sh daten inc menuetmp.txt test.html wissen.html


# Moechte man sich bei einem bestimmten Benutzer neben den standardmaessig angezeigten Werten lediglich als weitere Benutzereigenschaft die Personalnummer, die Attribute employeeID und employeeNumberanzeigen lassen, so lautet der Befehl
Get-ADUser –Properties employeeID,employeeNumber


# Alle Benutzerkonten in der Domaene anzeigen
Get-ADUser –Filter 1 artikeltmp.txt bak.html bastel.sh daten inc menuetmp.txt test.html wissen.html


# Alle AD-Objekte anzeigen
Get-ADObject –Filter { ObjectClass –Like „*“ }


# Alle Benutzerkonten einer bestimmten OU im Spaltenformat anzeigen
Get-ADUser –Filter 1 artikeltmp.txt bak.html bastel.sh daten inc menuetmp.txt test.html wissen.html -Searchbase „OU=,DC=Domaene,DC=de“ | FT


# Alle Benutzer in der Domaene mit dem Vornamen „Yusuf“ anzeigen
Get-ADUser –LDAPFilter „(givenName=Yusuf)“


# Alle Benutzerkonten in der Domaene mit der Personalnummer im Spaltenformat anzeigen
Get-ADUser -Filter 1 artikeltmp.txt bak.html bastel.sh daten inc menuetmp.txt test.html wissen.html -Properties employeeID,employeeNumber | FT


# Mit einer Ambiguous Name Resolution (kurz ANR) die Benutzer anzeigen, die im Vornamen, Nachnamen oder sAMAccountName den Eintrag „Yus“ enthalten
Get-ADUser –Filter { ANR –eq „Yus“ }


# Alle Benutzerkonten aus „Mainz“ anzeigen
Get-ADUser –Filter {City –Like „Mainz“}


# Alle Benutzerkonten mit dem Vornamen „Yusuf“ anzeigen
Get-ADUser –Filter {givenName –Like „Yusuf“} | FT


# Alle Benutzerkonten mit dem Nachnamen „Dikmenoglu“ anzeigen
Get-ADUser –Filter {Surname –Like „Dikmenoglu“}


# Alle Benutzerkonten aus der Abteilung „EDV“ anzeigen
Get-ADUser –Filter {Department –Like „EDV“}


# Alle Benutzerkonten anzeigen die in ihrem „Common Name“ irgendwo den Eintrag „Yus“ haben
Get-ADUser –Filter { CN –Like „*Yus*“ }


# Alle Benutzer die einen Wert im Attribut mail eingetragen haben anzeigen
Get-ADUser –Filter { mail –Like „*“ }

oder

Get-ADObject –Filter { mail –Like „*“ –and ObjectClass –eq “user” }


# Alle Benutzer die einen Wert im Attribut mail eingetragen haben und mit Nachname „Dikmenoglu“ lauten anzeigen
Get-ADUser –Filter { mail –Like „*“ –and Surname –eq „dikmenoglu“ }

oder

Get-ADUser –Filter { mail –Like „*“ –and sn –eq „dikmenoglu“ }


# Alle Benutzerkonten die keinen Wert im Attribut mail eingetragen haben anzeigen
Get-ADUser –Filter { mail –notlike „*“ }

Oder
Get-ADUser –LDAPFilter „(!(email=*))“


# Alle Benutzerkonten die im Common Name mit „Yusuf“ oder „Kaan“ beginnen anzeigen
Get-ADUser -Filter { CN -like "Yusuf*" -or CN -eq "Kaan"

oder

Get-ADObject -Filter { objectClass -eq "user" -and (CN -like "Yusuf*" -or CN -eq "Kaan") }


# Die Gruppenmitgliedschaften eines Benutzers anzeigen
Get-ADPrincipalGroupMembership Yusuf


# Alle Benutzerkonten anzeigen, die als Vorgesetzten „Yusuf“ eingetragen haben
Get-ADUser -Filter { Manager -eq "Yusuf" }


# Die direkten Gruppenmitgliedschaften samt der „primaeren Gruppe“ eines Benutzers anzeigen
Get-ADUser Yusuf –Properties primarygroupID,memberof


# Den Benutzer aus einer Gruppe entfernen
Remove-ADPrincipalGroupMembership Yusuf –MemberOf „Gruppe“


# Den Benutzer bis auf die primaere Gruppe, aus allen Gruppen entfernen
Get-ADPrincipalGroupMembership Yusuf | % {Remove-ADPrincipalGroupMembership Yusuf -MemberOf $_}


# Den Benutzer Kaan zu den gleichen Gruppen hinzufuegen, in denen Yusuf Mitglied ist
Get-ADPrincipalGroupMembership Yusuf | % {Add-ADPrincipalGroupMembership Kaan -MemberOf $_}


# Alle Benutzerkonten anzeigen, die sich in den letzten 10 Tagen angemeldet haben
$date = (get-date) – (new-timespan –days 10)
Get-ADUser –Filter { lastlogon –gt $date }

Ein anderer Befehl mit dem die Benutzer angezeigt werden, die sich in den letzten 5 Tagen an der Domaene angemeldet haben ist dieser:
Get-ADUser –LDAPFilter „(&(LastLogon>=128812906535515110)(objectCategory=user))“


# Alle Benutzer anzeigen die sich in den letzten 50 Tagen nicht angemeldet haben
$Vorvielentagen = (Get-Date).AddDays(-50)
Get-ADUser -Filter { lastLogonTimeStamp -notlike "*" -or lastLogonTimeStamp -le $Vorvielentagen }


# Alle Benutzerkonten die mehr als vier Mal ihr Kennwort falsch eingegeben haben anzeigen
Get-ADUser –LDAPFilter „(badPwdCount>=4)“

Oder
Get-ADUser –Filter {badPwdCount –ge 4}


# Einen Benutzer deaktivieren
Disable-ADAccount Yusuf


# Einen Benutzer aktivieren
Enable-ADAccount Yusuf


# Einen deaktivierten Benutzer im Container USERS erstellen
New-ADUser Yusuf


# Einen aktivierten Benutzer in der angegebenen OU mit mehreren Werten erstellen
New-ADUser –sAMAccountName „Yusuf“ –UserPrincipalName Yusuf@ad.dikmenoglu.de –givenname “Yusuf” –Surname “Dikmenoglu” –displayName “Yusuf Dikmenoglu” –Name “Yusuf Dikmenoglu” –scriptpath “login.bat” –Enabled $true –Path “OU=,DC=Domaene,DC=DE” –AccountPassword (ConvertTo-Securestring “Pa$$w0rd!” –asplaintext –Force)


# Ein Benutzerkonto mit allen Eigenschaften kopieren und im Container USERS erstellen
PS C:> $Groups = Get-ADPrincipalGroupMembership "Yusuf"
PS C:> Get-ADUser "Yusuf" -Properties 1 artikeltmp.txt bak.html bastel.sh daten inc menuetmp.txt test.html wissen.html | New-ADUser -Name "Benutzer2" -Displayname "Benutzer2" -samaccountname "Benutzer2" -accountpassword (ConvertTo-SecureString "Pa$$w0rd!" -AsPlainText –Force)
PS C:>Add-ADPrincipalGroupMembership "Benutzer2" -memberOf $Groups


# Ein Benutzerkonto nur mit bestimmten Attributen kopieren und im Container USERS erstellen
PS C:> $Groups = Get-ADPrincipalGroupMembership "Yusuf"
PS C:> Get-ADUser "Yusuf" -Properties profilPath, scriptPath, accountExpires | New-ADUser -Name "Benutzer2" -Displayname "Benutzer2" -samaccountname "Benutzer2" -accountpassword (ConvertTo-SecureString "Pa$$w0rd!" -AsPlainText –Force)
PS C:>Add-ADPrincipalGroupMembership "Benutzer2" -memberOf $Groups

# 50 aktivierte Benutzerkonten in einer bestimmten OU erstellen
(1..50) | Foreach-Object {New-ADUser –sAMAccountname "Benutzer$_" -Name "Benutzer$_" -AccountPassword (ConvertTo-SecureString -AsPlainText "Pa$$w0rd!" -Force) –Enabled $true –Path „OU=,DC=Domaene,DC=de“}


# Allen Benutzern einer bestimmten OU einen Wert im Feld „Beschreibung“ setzen
Get-ADUser –Filter 1 artikeltmp.txt bak.html bastel.sh daten inc menuetmp.txt test.html wissen.html -Searchbase „OU=,DC=Domaene,DC=DE“ | Set-ADUser –description „Wert“



# Die Option „Konto laeuft ab am:“ auf den 31. Oktober 2009 setzen
Set-ADUser Yusuf –AccountExpirationDate 01/11/2009





# Die Option „Konto laeuft ab“ auf „Nie“ setzen
Clear-ADAccountExpiration Yusuf




# Den Profilpfad, das Anmeldeskript und ein Homelaufwerk fuer einen bestimmten Benutzer eintragen
Set-ADUser „Yusuf“ –ProfilePath \Server01Profiles%username% -Scriptpath „Login.bat“ –Homedrive „X“ –HomeDirectory „\Server01homeYusuf“



# Einen Benutzer in eine andere OU verschieben
Get-ADUser Yusuf | Move-ADObject –TargetPath „OU=NeueOU,DC=Domaene,DC=de“




# Den relative distinguished name (RDN) eines Benutzers aendern
Rename-ADObject „CN=Yusuf Dikmenoglu,OU=IT,DC=Domaene,DC=de“ –NewName „Yusuf Cool“



# Einen Benutzer loeschen
Remove-ADUser Yusuf


# Einen Benutzer ohne Sicherheitsabfrage loeschen
Remove-ADUser Yusuf -Confirm:$False


# Mehrere Benutzer anhand eines gemeinsamen Kriteriums loeschen
Get-ADUser –Filter {Name –Like „*Dikmenoglu*“} | Remove-ADUser


# Mit dem folgenden Befehl wird die Voreinstellung fuer neue Benutzer auf einem deutschen DC (auf einem englischen System lautet der LDAP-Pfad ...,CN=409,...) auf „Nachname, Vorname“ geaendert (die Ansicht im Attribut name). Bestehende Objekte sind davon nicht betroffen.
Set-ADObject "CN=user-Display,CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=Domaene,DC=de" -Partition „CN=Configuration,DC=Domaene,DC=de“ -Replace @{CreateDialog="%, %"}


Die Voreinstellung fuer Kontakte wird wie folgt geaendert:
Set-ADObject "CN=contact-Display,CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=Domaene,DC=de" -Partition „CN=Configuration,DC=Domaene,DC=de“ -Replace @{CreateDialog="%, %"}


# Benutzer muss Kennwort bei der naechsten Anmeldung aendern
Set-ADUser –identity Yusuf –ChangePasswordAtLogon $true


# Die Kontooption „Benutzer kann Kennwort nicht aendern“ setzen
Set-ADAccountControl Yusuf -CannotChangePassword $true

Achtung: Ist die Kontooption „Benutzer muss Kennwort bei der naechsten Anmeldung aendern“ aktiviert, kann ueber dsa.msc nicht zusaetzlich die Kontooption „Benutzer kann Kennwort nicht aendern“ aktiviert werden. Was auch verstaendlich ist, denn diese beiden Optionen widersprechen sich. Ist jedoch die Kontooption „Benutzer muss Kennwort bei der naechsten Anmeldung aendern“ aktiviert und die Kontooption „Benutzer kann Kennwort nicht aendern“ wird ueber die AD-PowerShell aktiviert, sind anschliessend beide Optionen aktiviert!


# Einem Benutzer ein neues Kennwort vergeben
Set-ADAccountPassword –Identity Yusuf -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "Pa$$w0rd!" –Force)


# Die Kontooption „Kennwort laeuft nie ab“ bei einem Benutzer- oder Dienstkonto aktivieren
Set-ADAccountControl Yusuf -PasswordNeverExpires $true


# Bei allen Benutzern die Kontooption "Kennwort laeuft nie ab" deaktivieren und dafuer die Option "Benutzer muss Kennwort bei der naechsten Anmeldung aendern" aktivieren
Get-ADUser -filter 1 artikeltmp.txt bak.html bastel.sh daten inc menuetmp.txt test.html wissen.html | Set-ADUser -PasswordNeverExpires $false -ChangePasswordAtLogon $true

# Alle Benutzerkonten innerhalb einer bestimmten OU anzeigen, die die Kontooption „Kennwort laeuft nie ab“ aktiviert haben
Search-ADAccount -PasswordNeverExpires -SearchBase “OU=EDV,DC=blog,DC=dikmenoglu,DC=de”


Hinweis: Bei Nutzung des Cmdlets Search-ADAccount kann durch die Angabe des Parameters –UsersOnly oder –ComputersOnly die Abfrage entweder nur auf Benutzer- oder Computerkonten beschraenkt werden.


# Liefert alle Konten die ein abgelaufenes Kennwort besitzen
Search-ADAccount -PasswordExpired | FT Name,ObjectClass


# Alle Benutzer-, Computer- und Dienstkonten anzeigen, die deaktiviert sind
Search-ADAccount -AccountDisabled | FT Name


# Nur deaktivierte Benutzerkonten einer Domaene anzeigen
Search-ADAccount –AccountDisabled –Usersonly | FT Name


# Lediglich deaktivierte Computerkonten anzeigen. Wenn Clients aus der Domaene entfernt und in eine Arbeitsgruppe hinzugefuegt werden, wird das Computerkonto im AD deaktiviert und nicht geloescht.
Search-ADAccount -AccountDisabled -ComputersOnly | FT Name


# Alle deaktivierten Benutzer einer bestimmten Organisationseinheit (OU) anzeigen
Search-ADAccount -AccountDisabled –Searchbase „OU=,DC=Domaene,DC=DE | where {$_.ObjectClass -eq 'user'} | FT Name


# Abgelaufene Benutzerkonten anzeigen
Search-ADAccount –AccountExpired | FT Name


# Alle Benutzerkonten anzeigen, die in den naechsten 60 Tagen ablaufen
Search-ADAccount –AccountExpiring -TimeSpan 60.00:00:00 | FT Name


# Alle Konten anzeigen (auch Computer) die sich in den letzten 60 Tagen nicht angemeldet haben. Bei dieser Abfrage muss sich der Domaenenfunktionsmodus mindestens auf der Ebene „Windows Server 2003“ befinden
Search-ADAccount -AccountInactive -TimeSpan 60.00:00:00 | FT Name


# Alle gesperrten Benutzer anzeigen
Search-ADAccount -LockedOut –Usersonly | FT Name


# Einen bestimmten Benutzer entsperren
Unlock-ADAccount –identity


# Alle Benutzerkonten anzeigen die am 30.08.2009 ablaufen
Search-ADAccount -AccountExpiring -Usersonly -DateTime "8/30/2009" | FT Name




AD-PowerShell „Gruppenobjekt“ Befehle

Bei der Angabe des koennen folgende Werte verwendet werden:

- sAMAccountName
- Distinguished Name (DN)
- ObjectSID
- ObjectGUID

Mit dem Cmdlet Get-ADGroup werden standardmaessig folgende Werte angezeigt: DistinguishedName, GroupCategory, GroupScope, Name, ObjectClass, ObjectGUID, sAMAccountName, ObjectSID. Sollen neben diesen Werten noch weitere angezeigt werden, muessen diese mit dem Parameter –Properties angegeben werden. Z.B.: Get-ADGroup -Properties groupType,member,memberOf,whenCreated,whenchanged


# Alle Eigenschaften einer Gruppe werden mit der Angabe von dem Stern (Wildcard) angezeigt
Get-ADGroup -Properties 1 artikeltmp.txt bak.html bastel.sh daten inc menuetmp.txt test.html wissen.html


# Eine globale Sicherheitsgruppe im Container Users erstellen
New-ADGroup -Name "Neue Gruppe" -sAMAccountName NeueGruppe -GroupCategory Security -GroupScope Global -DisplayName "Neue Gruppe" -Path "CN=Users,DC=Domaene,DC=de"

# Eine domaenenlokale Sicherheitsgruppe in einer OU erstellen
New-ADGroup -Name "Gruppe" -sAMAccountName Gruppe -GroupCategory Security -GroupScope DomainLocal -DisplayName "Gruppe" -Path "OU=,DC=Domaene,DC=de"


# Eine universelle Sicherheitsgruppe in einer OU erstellen
New-ADGroup -Name "Gruppe" -sAMAccountName Gruppe -GroupCategory Security -GroupScope Universal -DisplayName "Gruppe" -Path "OU=,DC=Domaene,DC=de"


# Eine globale Verteilergruppe in der angegebenen OU erstellen

New-ADGroup -Name -sAMAccountName -GroupScope Global -GroupCategory Distribution –DisplayName –Path “OU=,DC=Domaene,DC=de”


# Alle Gruppen mit dem Gruppentyp “Sicherheit” anzeigen
Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=2147483648))“

Oder
Get-ADGroup –Filter „groupType –band 0x80000000“


# Alle Gruppen mit dem Gruppentyp “Verteiler” anzeigen
Get-ADGroup –LDAPFilter „(&(objectCategory=group)(!groupType:1.2.840.113556.1.4.803:=2147483648))“


# Nur universelle Sicherheitsgruppen anzeigen
Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=-2147483640))“


# Nur domaenenlokale Sicherheitsgruppen anzeigen
Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=-2147483644))“


# Nur globale Sicherheitsgruppen anzeigen
Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=-2147483646))“


# Globale Sicherheits- und Verteilergruppen werden mit diesem Befehl angezeigt
Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=2))“


# Domaenenlokale Sicherheits- und Verteilergruppen zeigt dieser Befehl an
Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=4))“


# Universelle Sicherheits- und Verteilergruppen anzeigen
Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=8))“


# Alle Benutzer anzeigen die als primaere Gruppe „Domaenen-Benutzer“ eingetragen haben
Get-ADUser –LDAPFilter „(&(objectCategory=person)(objectClass=user)(primaryGroupID=513))“


# Alle Benutzer anzeigen die als primaere Gruppe NICHT „Domaenen-Benutzer“ eingetragen haben
Get-ADUser –LDAPFilter „(&(objectCategory=person)(objectClass=user)(!primaryGroupID=513))“


# Alle direkten und verschachtelten Gruppenmitgliedschaften eines Benutzers anzeigen
Get-ADAccountAuthorizationGroup Yusuf


# Alle direkten Mitglieder einer Gruppe anzeigen
Get-ADGroupMember | FT Name


# Alle direkten und verschachtelten Mitglieder einer Gruppe anzeigen
Get-ADGroupMember -Recursive | FT Name -A


# Alle direkten, verschachtelten und aktive (keine deaktivierten) Mitglieder einer Gruppe anzeigen
Get-ADGroupMember -Recursive | Get-ADUser | Where-Object { $_.Enabled -eq 'True' } | FT Name


# Alle fuer das System wichtigen Gruppen anzeigen
Get-ADGroup -Filter { isCriticalSystemObject -eq $true }


# Eine Gruppe verschieben
Move-ADObject "CN=Gruppe,OU=Techniker,DC=Domaene,DC=de" -TargetPath "OU=NeueOU,DC=Domaene,DC=de"


# Eine Beschreibung fuer eine Gruppe setzen
Set-ADGroup -Description "Diese Gruppe darf Benutzer im AD erstellen"


# Eine Verteilergruppe in eine Sicherheitsgruppe aendern
Set-ADGroup -groupCategory Security


# Den Gruppenbereich einer Gruppe auf Global aendern
Set-ADGroup –groupScope Global


# Den Gruppenbereich und den Gruppentyp einer Gruppe aendern
Set-ADGroup –groupScope Universal -groupCategory Security

Anstatt Universal kann Global oder DomainLocal angegeben werden.


# Mitglieder zu einer Gruppe hinzufuegen
Add-ADGroupmember -Member Yusuf,Kaan


# Eine Gruppe loeschen
Remove-ADGroup


# Einen Benutzer aus einer Gruppe entfernen
Remove-ADGroupMember -Member Yusuf


# Alle direkten Gruppenmitgliedschaften eines Sicherheitsprinzipals (Benutzer, Gruppe, Computer) anzeigen
Get-ADPrincipalGroupMembership





AD-PowerShell „Organisationseinheit“ Befehle

# Mit dem Cmdlet Get-ADOrganizationalUnit werden folgende Werte angezeigt: City, Country, DistinguishedName, LinkedGroupPolicyObjects, ManagedBy, Name, ObjectClass, ObjectGUID, PostalCode, State, StreetAddress. Alle Eigenschaften einer OU lassen sich mit dem Parameter –Properties 1 artikeltmp.txt bak.html bastel.sh daten inc menuetmp.txt test.html wissen.html anzeigen.


# Alle OUs in einer Domaene anzeigen
Get-ADOrganizationalUnit -Filter {Name -like „*“} | FT Name, DistinguishedName -A


# Den Inhalt einer bestimmten OU anzeigen
Get-ADObject -Filter {Name -Like "*"} -Searchbase „OU=,DC=Domaene,DC=de“


# Eine OU erstellen. Dabei ist die Option Objekt vor zufaelligem Loeschen schuetzen automatisch aktiviert.
New-ADOrganizationalUnit -Name Techniker -Path "OU=IT,DC=Domaene,DC=de"


# Die Option Objekt vor zufaelligem Loeschen schuetzen von einer OU entfernen
Set-ADOrganizationalUnit „“ –ProtectedFromAccidentalDeletion $false


# Die Option Objekt vor zufaelligem Loeschen schuetzen auf einer OU aktivieren
Set-ADOrganizationalUnit „“ –ProtectedFromAccidentalDeletion $true


# Die Option Objekt vor zufaelligem Loeschen schuetzen auf allen OUs einer Domaene aktivieren
Get-ADOrganizationalUnit -Filter 'Name -like "*"' | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $true


# Eine OU verschieben
Move-ADObject "aktuelle DN der OU" -TargetPath "Ziel-DN"

Ist die Option Objekt vor zufaelligem Loeschen schuetzen aktiviert, erhaelt man eine Fehlermeldung.


# Eine OU samt dem kompletten Inhalt loeschen
Remove-ADOrganizationalUnit Test -Recursive

Ist die Option Objekt vor zufaelligem Loeschen schuetzen aktiviert, erhaelt man eine Fehlermeldung.


# Einen Benutzer aus einer OU loeschen
Remove-ADObject „CN=Yusuf Dikmenoglu,OU=IT,DC=Domaene,DC=de“


# Alle Objekte innerhalb einer OU in eine andere OU verschieben
Get-ADObject -Filter {Name -Like "*"} -Searchbase „OU=AlteOU,DC=Domaene,DC=de“ -SearchScope OneLevel | Move-ADObject -TargetPath "OU=NeueOU,DC=Domaene,DC=de"


# Eine OU umbenennen
Rename-ADObject "OU=AlterName,DC=Domaene,DC=de" -NewName


# Eine Beschreibung fuer eine OU vergeben
Set-ADOrganizationalUnit -description





AD-PowerShell „Computerobjekt“ Befehle

# Mit dem Cmdlet Get-ADComputer werden diese Werte angezeigt: DistinguishedName, DNSHostName, Enabled, Name, ObjectClass, ObjectGUID, sAMAccountName, ObjectSID, userPrincipalName.


# Alle Computerkonten innerhalb einer Domaene auflisten
Get-ADComputer –Filter {Name –Like “*”}


# Ein Computerobjekt in eine andere OU verschieben
Get-ADComputer | Move-ADObject -TargetPath „DN von Ziel-OU“


# Alle Computer anzeigen, die sich seit 180 Tagen nicht am AD angemeldet haben:
Search-ADaccount -AccountInactive -Timespan 180 -ComputersOnly


# Mit dem folgenden Befehl wird die maximale Anzahl an Clients die ein Domaenen-Benutzer zur Domaene hinzufuegen kann erhoeht
Set-ADDomain blog.dikmenoglu.de -Replace @{"ms-ds-MachineAccountQuota"="333"}

Siehe auch:


Dazugehoerende Dateien
artikel.txt
identity,streetaddress,city,postalcode,title,company,department,officephone,fax,MobilePhone
pascal.roessner,"Am Weser-Terminal 1",Bremen,28217,Systemadministrator,"hmmh multimediahaus AG",Systemadministration,04942169650164,+4942169650190,017624293862
hermann.schmidt,"Am Weser-Terminal 1",Oldenburg,22222,"Head of OL","hmmh multimediahaus AG",Systemadministration1019,04942169650165,04942169650190,01774300341
christian.nerlich,"Am Weser-Terminal 1",Berlin,33333,"Head of B","hmmh multimediahaus AG",Systemadministration,+49421696162,+4942169650190,666




PS C:UsersAdministrator> Import-Csv C:Usershermann.schmidtDesktopdaten.csv |Foreach { Set-ADUser -Identity $_.Identity -StreetAddress $_.streetaddress
-city $_.city -postalcode $_.postalcode -company $_.company -Department $_.department -Manager $_.manager-OfficePhone $_.officephone -Fax $_.fax -MobilePhone $_.MobilePhone }


http://technet.microsoft.com/en-us/library/ee617241.aspx

http://technet.microsoft.com/de-de/library/ee617215%28en-us%29.aspx



Die "" sind nicht notwendig, damit ö ä ü sauber importiert werden, muss die csv Datei als unicode gespeichert werden

PS C:UsersAdministrator> $datum=Get-Date -format dd.MM.yyyy ; Import-Csv C:Usersadministrator.HMMHDesktopimportne*.csv |Foreach { Set-ADUser -Identity $_.Identity -StreetAddress $_.streetaddress -city $_.city -postalcode $_.postalcode -company $_.company -Department $_.department -Manager $_.manager -OfficePhone $_.officephone -Fax $_.fax -MobilePhone $_.MobilePhone ; echo "$? $_.Identity" >> c:usershermann.schmidtDesktoplogs$datum.log } ; Move-Item C:Usershermann.schmidtDesktopimportne*.csv C:Usershermann.schmidtDesktopdone



Mit Hilfe der Powershell können auch E-Mails mit oder ohne Dateianhang (Attachment) versendet werden. Soll eine E-Mail ohne Anhang versendet werden, kann auf die Zeilen $filename, $att und $mailmessage.Attachments.Add($att) verzichtet werden.

function sendmail($body)
{
$filename = "Pfad zum Dateianhang"
$SmtpClient = new-object system.net.mail.smtpClient
$MailMessage = New-Object system.net.mail.mailmessage
$att = new-object Net.Mail.Attachment($filename)
$SmtpClient.Host = "Name des Mailservers"
$mailmessage.from = "Absenderadresse"
$mailmessage.To.add("Empfängeradresse")
$mailmessage.Subject = “Betreff der Nachricht”
$MailMessage.IsBodyHtml = $true
$mailmessage.Body = $body
$mailmessage.Attachments.Add($att)
$smtpclient.Send($mailmessage)
}

$body = "Irgendein Text oder der Inhalt einer Variable"


Dazugehoerende Dateien
artikel.txt
Rechte auf ein Postfach auslesen

Get-MailboxFolderPermission -Identity bjoern.portillo@hmmh.de:Kalender


Rechte auf ein Postach setzen in diesem Fall Editor

Set-MailboxFolderPermission -Identity bjoern.portillo@hmmh.de:Kalender -User wiebke.huelsmann@hmmh.ag -AccessRights Editor




Dazugehoerende Dateien
artikel.txt
Postfach exportieren
Ein Postfach exportieren

New-MailboxExportRequest -Mailbox User01 -FilePath "\adminpcexportUser01.pst"



Alle Postfaecher Exportieren

foreach ($i in (Get-Mailbox)) { New-MailboxExportRequest -Mailbox $i -FilePath "\adminpcexport$($i.Alias).pst" }th "\adminpcexportUser01.pst"


Status des Exports

Get-MailboxExportRequest | Get-MailboxExportRequestStatistics


Postfach importieren

New-MailboxImportRequest –Mailbox User01 –FilePath "\adminpcexportUser01.pst"


Fertige Postfaecher aus der Queue entfernen

Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest


Quelle http://www.security-blog.eu/2011/06/10/exchange-2010-sbs-2011-mailboxen-exportieren-importieren-bulk-massen-alle/




Dazugehoerende Dateien
artikel.txt