<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>pmd media &#187; Skripting</title>
	<atom:link href="http://blog.pmd-media.com/tag/skripting/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.pmd-media.com</link>
	<description>it-consulting &#38; development</description>
	<lastBuildDate>Tue, 10 Jan 2012 10:15:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Microsoft Exchange Server 2003 ExMerge-Problem</title>
		<link>http://blog.pmd-media.com/2009/11/28/microsoft-exchange-server-2003-exmerge-problem</link>
		<comments>http://blog.pmd-media.com/2009/11/28/microsoft-exchange-server-2003-exmerge-problem#comments</comments>
		<pubDate>Sat, 28 Nov 2009 18:46:34 +0000</pubDate>
		<dc:creator>Frank Piotrowsky</dc:creator>
				<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[2003]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Eingabeaufforderung]]></category>
		<category><![CDATA[eMail]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Kommandozeile]]></category>
		<category><![CDATA[Konsole]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Skripting]]></category>

		<guid isPermaLink="false">http://blog.pmd-media.com/?p=219</guid>
		<description><![CDATA[
			
				
			
		
Gestern habe ich mit ExMerge gekämpft, um einzelne Postfächer aus einem Microsoft Exchange Server 2003 in PST-Dateien zu exportieren. Also habe ich die Konfiguration aufgesetzt, die exmerge.ini Datei ausgefüllt, eine mailboxes.txt Datei angelegt, etc. Also, alle Vorarbeiten getroffen, die durchzuführen waren.
Dann ging es an die Ausführung:
exmerge -b -d
-b startet ExMerge im Batch-Mode (ohne GUI) und [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.pmd-media.com%2F2009%2F11%2F28%2Fmicrosoft-exchange-server-2003-exmerge-problem"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.pmd-media.com%2F2009%2F11%2F28%2Fmicrosoft-exchange-server-2003-exmerge-problem&amp;source=FPiotrowsky&amp;style=normal&amp;service=bit.ly&amp;service_api=R_2ada418849661b0a351ca4eaa9f13404&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Gestern habe ich mit ExMerge gekämpft, um einzelne Postfächer aus einem Microsoft Exchange Server 2003 in PST-Dateien zu exportieren. Also habe ich die Konfiguration aufgesetzt, die exmerge.ini Datei ausgefüllt, eine mailboxes.txt Datei angelegt, etc. Also, alle Vorarbeiten getroffen, die durchzuführen waren.</p>
<p>Dann ging es an die Ausführung:</p>
<pre>exmerge -b -d</pre>
<p>-b startet ExMerge im Batch-Mode (ohne GUI) und -d zeigt während der Ausführung ein Fenster mit einem Fortschrittsbalken an.</p>
<p>Soweit die Theorie. In der Praxis funktionierte das nicht. Ich bekam im Logfile folgende Fehlermeldung:</p>
<pre>Error! Server server.domain.local is not listed as an Exchange 2000
server in the Active Directory on server SERVER.
(CADRoutines::GetExchangeServerNameInfo)</pre>
<p>Das Web gab hierzu nicht wirklich was her. Ich habe gesucht und gesucht. Und folgende Vorschläge überprüft:</p>
<ul>
<li><em>Receive As</em> (<em>Empfangen als</em>) und <em>Send As</em> (<em>Senden als</em>) Erlaubnis für den ausführenden User auf dem Exchange Server (Administratoren haben bei diesen Punkten sowohl die Erlaubnis als auch die Verweigerung)</li>
<li>ob Exchange-Dienste ausgeführt werden</li>
<li>verschiedene Einstellungen in der exmerge.ini ausprobiert</li>
<li>eine Gruppe und einen User angelegt (es sollte laut Foren eine Gruppe <em>Exchange Services</em> geben, die ich aber nicht finden konnte. Dieser Gruppe sollte der User zugeordnet werden. Angeblich weil ExMerge nicht mit dem Administrator Konto ausführbar sei &#8211; sobald aber die Einstellungen bzgl. <em>Receive As</em> und <em>Send As</em> geändert waren und der Informationsspeicher neu gestartet wurde, ist das aber kein Problem!)</li>
</ul>
<h3>Lösung</h3>
<p>Zu diesem Fehler gab das Web leider nicht mehr her. Heute habe ich das Problem gelöst: Der Servername! Ich hatte den FQDN (Full Qualified Domain Name, Voll qualifizierter Domain-Name) angegeben. ExMerge nutzt zur Überprüfung aber LDAP, um das Active Directory abzufragen und erwartet hier den reinen Servernamen. In meinem Fall also nicht <em>server</em>.<em>domain</em>.<em>local</em>, sondern schlicht und einfach nur <em>server</em>. Im Active Directory findet er weder unter der IP etwas, noch unter localhost.</p>
<p>Danach lief alles wie gewünscht und problemlos.</p>
<p>Haben Sie Ähnliches erlebt mit ExMerge? Ich freue mich auf Ihre Kommentare.</p>
<div class="shr-publisher-219"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.pmd-media.com/2009/11/28/microsoft-exchange-server-2003-exmerge-problem/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HowTo: Verkleinern einer Microsoft SQL Server Datenbank</title>
		<link>http://blog.pmd-media.com/2009/10/08/howto-verkleinern-einer-microsoft-sql-server-datenbank</link>
		<comments>http://blog.pmd-media.com/2009/10/08/howto-verkleinern-einer-microsoft-sql-server-datenbank#comments</comments>
		<pubDate>Thu, 08 Oct 2009 22:00:26 +0000</pubDate>
		<dc:creator>Frank Piotrowsky</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[2005]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Performancesteigerung]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Skripting]]></category>
		<category><![CDATA[Speicherverkleinerung]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://blog.pmd-media.com/?p=191</guid>
		<description><![CDATA[
			
				
			
		
Der normale Weg, eine Microsoft SQL Server-Datenbank zu verkleinern ist über das Microsoft SQL Server Management Studio bzw. über den Befehl DBCC SHRINKDATABASE.
Doch was ist, wenn die Datei der Datenbank nicht kleiner wird? Was ist, wenn die Datenbank anzeigt, dass nur noch ein paar Megabyte Speicherplatz frei sind, obwohl Sie jede Menge Datensätze aus der [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.pmd-media.com%2F2009%2F10%2F08%2Fhowto-verkleinern-einer-microsoft-sql-server-datenbank"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.pmd-media.com%2F2009%2F10%2F08%2Fhowto-verkleinern-einer-microsoft-sql-server-datenbank&amp;source=FPiotrowsky&amp;style=normal&amp;service=bit.ly&amp;service_api=R_2ada418849661b0a351ca4eaa9f13404&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Der normale Weg, eine Microsoft SQL Server-Datenbank zu verkleinern ist über das Microsoft SQL Server Management Studio bzw. über den Befehl <em>DBCC SHRINKDATABASE</em>.<br />
Doch was ist, wenn die Datei der Datenbank nicht kleiner wird? Was ist, wenn die Datenbank anzeigt, dass nur noch ein paar Megabyte Speicherplatz frei sind, obwohl Sie jede Menge Datensätze aus der Datenbank gelöscht haben?<br />
Das ist mir mit einer Datenbank passiert. Inhalt: ca. 40 Mio. Datensätze, Größe: ca. 12 GB. Nachdem ich ca. 34 Mio. Datensätze gelöscht habe, zeigte die Datenbank über das SQL Server Management Studio an, dass gerade einmal 12 MB freier Speicher verfügbar war. <em>DBCC SHRINKFILE</em> oder <em>DBCC SHRINKDATABASE</em> haben keine Dateiverkleinerung erreicht. Die Größe blieb bei 12 GB.</p>
<h3>Warum?</h3>
<p>SQL Server schreibt die Daten in die Datenbank und erstellt sogenannte Seiten für die Indizes. Eine Seite hat eine bestimmte Größe. Ist eine Seite mit einer bestimmten Anzahl an Index-Einträgen gefüllt, dann wird eine neue Seite erstellt, auf die dann die nächsten Index-Daten geschrieben werden. So viel grob gesagt zur Technik.<br />
Die Indizes in meiner Datenbank waren also auf viele Seiten verteilt, und diese Seiten wiederum in der gesamten Datei. <em>DBCC SHRINKFILE</em> und <em>DBCC SHRINKDATABASE</em> können zwar Speicher in der Datei reorganisieren, allerdings nichts gegen die Fragmentation der Seiten tun.</p>
<h3>Die Lösung</h3>
<p>Um die Seiten zu reorganisieren müssen Sie die Indizes in der Datenbank neu aufbauen und können danach die Befehle DBCC SHRINKFILE oder DBCC DBCC SHRINKDATABASE  ausführen.</p>
<h4>2 Möglichkeiten</h4>
<p>Hierfür haben Sie 2 Möglichkeiten zur Verfügung.</p>
<ol>
<li>Über ein Skript</li>
<li>Über das Microsoft SQL Server Management Studio</li>
</ol>
<h4>Das Skript</h4>
<p>Das Skript, das Sie für die Ausführung der Reorganisation benötigen, finden Sie als Nächstes in diesem Post. Die Ausführung über das Microsoft SQL Server Management Studio finden Sie als Videotutorial in diesem Post.<br />
Das folgende Skript führt die Reorganisation der Indizes in der Datenbank aus und sorgt für eine Füllung der Seiten zu 90%.</p>
<pre>USE DatenbankName -- Geben Sie den Namen der Datenbank an, deren
                  -- Indizes neu aufgebaut werden sollen

DECLARE @TableName varchar(255)
DECLARE TableCursor CURSOR FOR
SELECT table_name FROM information_schema.tables
WHERE table_type = 'base table'

OPEN TableCursor

FETCH NEXT FROM TableCursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
DBCC DBREINDEX(@TableName,' ',90)
FETCH NEXT FROM TableCursor INTO @TableName
END

CLOSE TableCursor

DEALLOCATE TableCursor</pre>
<p>Da mit <em>DBCC DBREINDEX</em> immer nur einzelne Tabellen bearbeitet werden können, geht dieses Skript jede Tabelle einzeln durch.</p>
<h4>Die Reorganisation via Microsoft SQL Server Management Studio</h4>
<p><span class="youtube">
<object width="425" height="355">
<param name="movie" value="http://www.youtube.com/v/n6Y1hlqrflU?color1=d6d6d6&amp;color2=f0f0f0&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;loop=&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0&amp;rel=1" />
<param name="allowFullScreen" value="true" />
<embed wmode="opaque" src="http://www.youtube.com/v/n6Y1hlqrflU?color1=d6d6d6&amp;color2=f0f0f0&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;loop=&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0&amp;rel=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="355"></embed>
<param name="wmode" value="opaque" />
</object>
</span><p><a href="http://www.youtube.com/watch?v=n6Y1hlqrflU"><img src="http://img.youtube.com/vi/n6Y1hlqrflU/default.jpg" width="130" height="97" border=0></a></p><p><a href="http://www.youtube.com/watch?v=n6Y1hlqrflU">www.youtube.com/watch?v=n6Y1hlqrflU</a></p></p>
<p>Nach der Ausführung der Reorganisation funktioniert dann auch der <em>DBCC SHRINKDATABASE</em> Befehl:</p>
<pre>use DatenbankName
go
dbcc shrinkdatabase    (DatenbankName, NOTRUNCATE)
go
dbcc shrinkdatabase    (DatenbankName, TRUNCATEONLY)</pre>
<p>Danach war die Datenbank von 12 GB auf 2 GB geschrumpft.</p>
<h5>Achtung!</h5>
<p>Die Ausführung von <em>DBCC DBREINDEX</em> ist ein Offline-Vorgang, d.h. <strong>die Tabelle wird für die Zeit der Ausführung gesperrt und Benutzer können nicht darauf zugreifen</strong>. Deshalb empfehle ich, diesen Vorgang außerhalb der normalen Betriebszeiten auszuführen.</p>
<p>Wenn Sie Anregungen zu der Anleitung haben oder Kommentare, so zögern Sie nicht, hier zu kommentieren. Ich freue mich über Ihr Feedback.</p>
<div class="shr-publisher-191"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.pmd-media.com/2009/10/08/howto-verkleinern-einer-microsoft-sql-server-datenbank/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Virtuelle Maschine im Virtual Server 2005 von der Kommandozeile starten</title>
		<link>http://blog.pmd-media.com/2009/09/08/virtuelle-maschine-im-virtual-server-2005-von-der-kommandozeile-starten</link>
		<comments>http://blog.pmd-media.com/2009/09/08/virtuelle-maschine-im-virtual-server-2005-von-der-kommandozeile-starten#comments</comments>
		<pubDate>Tue, 08 Sep 2009 09:32:57 +0000</pubDate>
		<dc:creator>Frank Piotrowsky</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[2003]]></category>
		<category><![CDATA[2008]]></category>
		<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[Kommandozeile]]></category>
		<category><![CDATA[Konsole]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Skripting]]></category>
		<category><![CDATA[VHD]]></category>
		<category><![CDATA[Virtual]]></category>
		<category><![CDATA[Virtualisierung]]></category>
		<category><![CDATA[Virtuelle Maschine]]></category>

		<guid isPermaLink="false">http://blog.pmd-media.com/?p=159</guid>
		<description><![CDATA[
			
				
			
		
Hyper-V ist die Technologie, wenn es um Virtualisierungen auf Microsoft Windows Server 2008-Systemen geht. Doch auch auf Server 2003 kann man virtualisieren: mit Microsoft Virtual Server 2005 (kostenloser Download hier).
Die Konfiguration ist ähnlich wie auch bei Hyper-V, allerdings ist der Server-Manager auf einer Web-Oberfläche zu Hause. Nun hatte ich das Problem, dass, nachdem ich die [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.pmd-media.com%2F2009%2F09%2F08%2Fvirtuelle-maschine-im-virtual-server-2005-von-der-kommandozeile-starten"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.pmd-media.com%2F2009%2F09%2F08%2Fvirtuelle-maschine-im-virtual-server-2005-von-der-kommandozeile-starten&amp;source=FPiotrowsky&amp;style=normal&amp;service=bit.ly&amp;service_api=R_2ada418849661b0a351ca4eaa9f13404&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Hyper-V ist die Technologie, wenn es um Virtualisierungen auf Microsoft Windows Server 2008-Systemen geht. Doch auch auf Server 2003 kann man virtualisieren: mit Microsoft Virtual Server 2005 (<a title="Microsoft Virtual Server 2005 R2 Download" href="http://www.microsoft.com/downloads/details.aspx?displaylang=de&amp;FamilyID=6dba2278-b022-4f56-af96-7b95975db13b" target="_blank">kostenloser Download hier</a>).</p>
<p>Die Konfiguration ist ähnlich wie auch bei Hyper-V, allerdings ist der Server-Manager auf einer Web-Oberfläche zu Hause. Nun hatte ich das Problem, dass, nachdem ich die virtuelle Maschine angelegt hatte, der Browser (Internet Explorer 8 ) beim Klick auf den Link zum Starten der virtuellen Maschine einen Java-Script Error meldete. Kurzum, die Maschine ließ sich nicht starten.</p>
<p>Virtual Server hat zwar keine direkten Befehle zum Starten, bringt aber ein API mit, derer man sich bedienen kann.</p>
<p>Zunächst legt man in einem Script folgende Initialisierung an:</p>
<pre>var objVS = new ActiveXObject("VirtualServer.Application", strServer);
var objVM = objVS.FindVirtualMachine(strVMName);
var objTask;</pre>
<p>Nachdem das Objekt angelegt wurde, kann man die Maschine mit folgendem Befehl starten:</p>
<pre>objTask = objVM.StartUp();
WaitForTask(objTask);</pre>
<p>Hier der Code für ein komplettes Script:</p>
<pre>//
// Remote Start/Stop einer Virtuellen Maschine
//
var CRLF = "rn";
var VM_STATE_OFF = 1;
var VM_STATE_RUNNING = 5;

var strServer = "<em>VS Server</em>"
var strVMName = "<em>Gast VM Name</em>"

var objVS = new ActiveXObject("VirtualServer.Application", strServer);
var objVM = objVS.FindVirtualMachine(strVMName);
var objTask;

//
// Wenn die virtuelle Maschine gefunden wurde
//
if ( objVM != null )
{
    WScript.Echo("Virtuelle Maschine mit folgendem Namen gefunden: " +
      strVMName);

    //
    // Wenn die VM läuft, dann auf einen sauberen Shutdown warten
    //
    // Das setzt voraus, dass die VM Additions auf dem Gast OS
    // installiert sind
    //
    // Es kann passieren, dass dieser Befehl auf einer
    // "eingefrorenen" VM nicht funktioniert
    //
    if ( objVM.State == VM_STATE_RUNNING )
    {
        try
        {
            WScript.Echo("Versuche, die VM herunterzufahren...");
            task = objVM.GuestOS.Shutdown();
            WaitForTask(task);
        }
        catch (e)
        {
            //
            // Das Herunterfahren hat nicht funktioniert,
            // also schalte die VM aus
            //
            WScript.Echo("Erzwinge das Ausschalten der VM...");
            task = objVM.TurnOff();
            WaitForTask( task );
        }
    }

    //
    // Ist eine VM ausgeschltet, dann wird sie gestartet
    //
    if ( objVM.State == VM_STATE_OFF )
    {
        WScript.Echo("Starte VM...");
        objTask = objVM.StartUp();
        WaitForTask(objTask);
    }
}
else
{
    WScript.Echo("Konnte kein VM mit folgendem Namen finden: " +
        strVMName);
}</pre>
<p>Kopieren Sie diesen Code in einen Editor und speichern die Datei mit der Endung .js ab. Danach können Sie sie auf dem Host (Server, der den Virtual Server 2005 ausführt) auf der Kommandozeile ausführen. Ersetzen Sie die Werte <em>VS Server</em> und <em>Gast VM Name</em> mit dem Namen Ihres Servers und mit dem Namen der virtuellen Maschine.</p>
<p>Diesen Code habe ich auf dem Blog von David Wang gefunden: <a title="HOWTO: Remotely start and stop a Virtual Machine on Virtual Server 2005" href="http://blogs.msdn.com/david.wang/archive/2005/10/18/HOWTO_Remotely_start_and_stop_a_Virtual_Machine_on_Virtual_Server_2005.aspx" target="_blank">http://blogs.msdn.com/david.wang/archive/2005/10/18/HOWTO_Remotely_start_and_stop_a_Virtual_Machine_on_Virtual_Server_2005.aspx </a>- Thank you David for sharing this code on the web.</p>
<div class="shr-publisher-159"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.pmd-media.com/2009/09/08/virtuelle-maschine-im-virtual-server-2005-von-der-kommandozeile-starten/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Serverstatistiken per Kommandozeile</title>
		<link>http://blog.pmd-media.com/2009/08/30/serverstatistiken-per-kommandozeile</link>
		<comments>http://blog.pmd-media.com/2009/08/30/serverstatistiken-per-kommandozeile#comments</comments>
		<pubDate>Sun, 30 Aug 2009 17:30:11 +0000</pubDate>
		<dc:creator>Frank Piotrowsky</dc:creator>
				<category><![CDATA[QuickTipp]]></category>
		<category><![CDATA[2003]]></category>
		<category><![CDATA[2008]]></category>
		<category><![CDATA[Konsole]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Skripting]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://blog.pmd-media.com/?p=152</guid>
		<description><![CDATA[
			
				
			
		
Microsoft bietet auf der Kommandozeile die Möglichkeit allgemeine Server-Statistiken abzurufen (z.B. das Datentransfervolumen).
Der Befehl hierzu lautet:

net statistics server

für die Statistiken, die die Server-Dienste betreffen und

net statistics workstation

für die Statistiken, die den Rechner selbst betreffen.
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.pmd-media.com%2F2009%2F08%2F30%2Fserverstatistiken-per-kommandozeile"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.pmd-media.com%2F2009%2F08%2F30%2Fserverstatistiken-per-kommandozeile&amp;source=FPiotrowsky&amp;style=normal&amp;service=bit.ly&amp;service_api=R_2ada418849661b0a351ca4eaa9f13404&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><img class="alignleft size-full wp-image-377" title="QuickTipp" src="http://blog.pmd-media.com/wp-content/uploads/2010/03/QuickTipp.jpg" alt="QuickTipp" width="300" height="400" />Microsoft bietet auf der Kommandozeile die Möglichkeit allgemeine Server-Statistiken abzurufen (z.B. das Datentransfervolumen).</p>
<p>Der Befehl hierzu lautet:</p>
<ul>
<li>net statistics server</li>
</ul>
<p>für die Statistiken, die die Server-Dienste betreffen und</p>
<ul>
<li>net statistics workstation</li>
</ul>
<p>für die Statistiken, die den Rechner selbst betreffen.</p>
<div class="shr-publisher-152"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.pmd-media.com/2009/08/30/serverstatistiken-per-kommandozeile/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dienste per Kommandozeile aktivieren bzw. deaktivieren</title>
		<link>http://blog.pmd-media.com/2009/08/30/dienste-per-kommandozeile-aktivieren-bzw-deaktivieren</link>
		<comments>http://blog.pmd-media.com/2009/08/30/dienste-per-kommandozeile-aktivieren-bzw-deaktivieren#comments</comments>
		<pubDate>Sun, 30 Aug 2009 17:13:14 +0000</pubDate>
		<dc:creator>Frank Piotrowsky</dc:creator>
				<category><![CDATA[QuickTipp]]></category>
		<category><![CDATA[2003]]></category>
		<category><![CDATA[2008]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[Dienst]]></category>
		<category><![CDATA[Kommandozeile]]></category>
		<category><![CDATA[Konsole]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Skripting]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://blog.pmd-media.com/?p=148</guid>
		<description><![CDATA[
			
				
			
		
Man kann für die unterschiedlichsten Scenarien Dienste, die im Microsoft Windows Betriebssystem aktiviert sind, zu deaktivieren bzw. zu aktivieren. Die Syntax hierzu lautet:
sc [Server] config Dienstname Option1 Option2&#8230;
Optionen:
Der Optionsname enthält das Gleichheitszeichen.
Zwischen dem Gleichheitszeichen und dem Wert muss ein Leerzeichen eingefügt werden.
type= own&#124;share&#124;interact&#124;kernel&#124;filesys&#124;rec&#124;adapt
start= boot&#124;system&#124;auto&#124;demand&#124;disabled&#124;delayed-auto
error= normal&#124;severe&#124;critical&#124;ignore
binPath= Binärpfadname
group= LoadOrderGroup
tag= yes&#124;no
depend= Abhängigkeiten(getrennt durch / (Schrägstrich))
obj= AccountName&#124;ObjectName
DisplayName= Anzeigename
password= Kennwort
Kursiv [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.pmd-media.com%2F2009%2F08%2F30%2Fdienste-per-kommandozeile-aktivieren-bzw-deaktivieren"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.pmd-media.com%2F2009%2F08%2F30%2Fdienste-per-kommandozeile-aktivieren-bzw-deaktivieren&amp;source=FPiotrowsky&amp;style=normal&amp;service=bit.ly&amp;service_api=R_2ada418849661b0a351ca4eaa9f13404&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><img class="alignleft size-full wp-image-377" title="QuickTipp" src="http://blog.pmd-media.com/wp-content/uploads/2010/03/QuickTipp.jpg" alt="QuickTipp" width="300" height="400" />Man kann für die unterschiedlichsten Scenarien Dienste, die im Microsoft Windows Betriebssystem aktiviert sind, zu deaktivieren bzw. zu aktivieren. Die Syntax hierzu lautet:</p>
<p>sc [<em>Server</em>] config <em>Dienstname</em> <em>Option1</em> <em>Option2</em>&#8230;</p>
<h4>Optionen:</h4>
<p>Der Optionsname enthält das Gleichheitszeichen.<br />
Zwischen dem Gleichheitszeichen und dem Wert muss ein Leerzeichen eingefügt werden.</p>
<p>type= own|share|interact|kernel|filesys|rec|adapt<br />
start= boot|system|auto|demand|disabled|delayed-auto<br />
error= normal|severe|critical|ignore<br />
binPath= <em>Binärpfadname</em><br />
group= LoadOrderGroup<br />
tag= yes|no<br />
depend= <em>Abhängigkeiten</em>(getrennt durch / (Schrägstrich))<br />
obj= <em>AccountName</em>|<em>ObjectName</em><br />
DisplayName= <em>Anzeigename</em><br />
password= <em>Kennwort</em></p>
<p>Kursiv gedruckte Wörter müssen mit dem jeweils entsprechenden Wert ersetzt werden, Wörter in eckigen Klammern [] sind optional und die Pipe | bedeutet oder.</p>
<p>Der Wert delayed-auto ist bei Microsoft Windows Server 2003 nicht verfügbar.</p>
<p>Bitte beachten Sie bei Microsoft Windows Vista, dass Sie die Kommandozeile als Administrator ausführen.</p>
<div class="shr-publisher-148"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.pmd-media.com/2009/08/30/dienste-per-kommandozeile-aktivieren-bzw-deaktivieren/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scripting von Dateifreigaben</title>
		<link>http://blog.pmd-media.com/2009/06/28/scripting-von-dateifreigaben</link>
		<comments>http://blog.pmd-media.com/2009/06/28/scripting-von-dateifreigaben#comments</comments>
		<pubDate>Sun, 28 Jun 2009 14:37:15 +0000</pubDate>
		<dc:creator>Frank Piotrowsky</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[2008]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[Dateifreigabe]]></category>
		<category><![CDATA[Dokumentation]]></category>
		<category><![CDATA[Eingabeaufforderung]]></category>
		<category><![CDATA[Konsole]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Skripting]]></category>

		<guid isPermaLink="false">http://pmdmedia.wordpress.com/?p=7</guid>
		<description><![CDATA[
			
				
			
		
Das Skripten von Dateifreigaben hat mehrere Vorteile:

Dokumentation
Automatisation

1. Dokumentation
Ein Netzwerk sollte und muss (je nach Unternehmensgröße, jedoch ab 10 Mitarbeitern Pficht) sorgfältig dokumentiert werden. Durch die Dokumentation ist man in der Lage, auch noch 3 Monate nachdem man eine Konfiguration durchgeführt hat, zu verstehen, was man dort getan hat. Werden jetzt verschiedene Tasks auch noch geskriptet, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.pmd-media.com%2F2009%2F06%2F28%2Fscripting-von-dateifreigaben"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.pmd-media.com%2F2009%2F06%2F28%2Fscripting-von-dateifreigaben&amp;source=FPiotrowsky&amp;style=normal&amp;service=bit.ly&amp;service_api=R_2ada418849661b0a351ca4eaa9f13404&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Das Skripten von Dateifreigaben hat mehrere Vorteile:</p>
<ol>
<li>Dokumentation</li>
<li>Automatisation</li>
</ol>
<h3>1. Dokumentation</h3>
<p>Ein Netzwerk sollte und muss (je nach Unternehmensgröße, jedoch ab 10 Mitarbeitern Pficht) sorgfältig dokumentiert werden. Durch die Dokumentation ist man in der Lage, auch noch 3 Monate nachdem man eine Konfiguration durchgeführt hat, zu verstehen, was man dort getan hat. Werden jetzt verschiedene Tasks auch noch geskriptet, dann kann dieses Skript für sich schon als Dokumentation dienen und mehr Aufschluss geben als so manche nachher erstellten Dokumente.</p>
<h3>2. Automatisation</h3>
<p>1 Netzwerkfreigabe anzulegen, deren Berechtigungen auf Netzwerk- und auf Dateiebene einzustellen ist kein Problem. Doch was ist, wenn es 10, 20, 50 oder 100 Netzwerkfreigaben sind? Und was ist, wenn diese nach ca. 1 Monat oder 1 Jahr wieder geändert werden sollen? Z.B. von einem Laufwerk auf ein anderes, oder von einem Server auf den anderen? Dann stößt die GUI sehr schnell an die Grenzen der Praktikabilität. Ein Skript kann hier schnell angepasst werden und den Änderungsaufwand drastisch reduzieren.</p>
<h3>Die Befehle</h3>
<p>Für das Skripting braucht man eigentlich nur 2 Befehle:</p>
<ul>
<li>net share</li>
<li>cacls (für Windows XP/Server 2003)</li>
<li>icacls (für Windows Server 2003 SP2/Vista/Server 2008)</li>
</ul>
<p>Zunächst müssen die möglicherweise bestehenden Netzwerkfreigaben (Shares oder Shared Folders) gelöscht werden:</p>
<ul>
<li>net share <em>freigabename</em> /delete</li>
</ul>
<p>Danach werden die Freigaben inkl. der Berechtigungen auf Netzwerkebene neu angelegt:</p>
<ul>
<li>net share <em>freigabename</em>=<em>Laufwerk</em>:\<em>Pfad</em> /grant:&#8221;<em>benutzername</em>&#8220;,<em>accesslevel</em> /unlimited</li>
</ul>
<p>Die kursiv-gedruckten Wörter müssen durch Ihre Werte ersetzt werden. accesslevel kann die folgenden Ausprägungen haben:</p>
<ul>
<li>FULL (Vollzugriff)</li>
<li>READ (Lesen)</li>
<li>CHANGE (Ändern)</li>
</ul>
<p>Sollten mehrere Berechtigungen gesetzt werden, wird der /grant Parameter einfach so oft wiederholt, wie Berechtigungen vergeben werden müssen:</p>
<ul>
<li>net share <em>freigabename</em>=<em>Laufwerk</em>:\<em>Pfad</em> /grant:&#8221;<em>benutzername</em>&#8220;,<em>accesslevel</em> /grant:&#8221;<em>gruppenname</em>&#8220;,<em>accesslevel</em> /grant:&#8221;<em>benutzername2</em>&#8220;,<em>accesslevel</em> /unlimited</li>
</ul>
<p>Die Berechtigungen können nachträglich nicht mehr verändert werden. Die Freigabe muss hiefür gelöscht und wieder neu erstellt werden.</p>
<p>Der nächste Schritt besteht darin, die Berechtigungen auf Datei-Ebene zu setzen. Für jeden Benutzer oder jede Gruppe wird, anders als bei net share mit dem /grant-Parameter, jeweils ein cacls-Befehl benötigt. Hier die Syntax:</p>
<ul>
<li>cacls <em>dateiname</em> /t /e /g <em>benutzer</em>:<em>berechtigung</em></li>
<li>icacls <em>dateiname</em> /grant <em>benutzer</em>:[(<em>Vererbung1</em>)][(<em>Vererbung2</em>)](<em>Berechtigung1</em>,<em>Berechtigung2</em>,&#8230;)</li>
</ul>
<p>Auch hier müssen Sie die kursiv-gedruckten Wörter durch Ihre Daten ersetzen. Werte in eckigen Klammern sind optional. Bei icacls müssen die Vererbungs- und Berechtigungswerte in Klammern geschrieben werden.</p>
<p>berechtigung kann die folgenden Werte haben:</p>
<ul>
<li>n (keine)</li>
<li>r (lesen)</li>
<li>c (ändern)</li>
<li>f (Vollzugriff)</li>
</ul>
<p>Vererbung kann die folgenden Werte haben (icacls):</p>
<ul>
<li>oi (an Objekte/Dateien)</li>
<li>ci (an Container/Verzeichnisse)</li>
<li>io (nur vererben, nur auf das Verzeichnis selbst anwenden)</li>
<li>np (nicht vererben, nur auf das Verzeichnis selbst anwenden)</li>
</ul>
<p>berechtigung kann die folgenden Werte haben (icacls):</p>
<ul>
<li>f (Vollzugriff)</li>
<li>m (Ändern)</li>
<li>rx (Lesen und Ausführen)</li>
<li>r (Lesen)</li>
<li>w (Schreiben)</li>
<li>die Berechtigungen können noch feiner gesteuert werden, doch würde diese Betrachtung hier den Rahmen sprengen. Microsoft hat <a title="iCacls" href="http://support.microsoft.com/kb/919240/de" target="_blank">hier</a> eine ausführlichere Betrachtung.</li>
</ul>
<p>Die Befehle werden dann der Reihenfolge nach in eine Batch-Datei geschrieben, die dann ausgeführt werden kann.</p>
<h4>Hier noch 2 Anmerkungen:</h4>
<ol>
<li>Sollen in den Werten, die in die Befehle eingearbeitet werden, Leerzeichen verwendet werden, so muss der Wert in Anführungszeichen stehen, da die Konsole das nächste Wort nach dem Leerzeichen als neuen Parameter oder Befehl interpretieren möchte.</li>
<li>Sollen deutsche Umlaute oder Sonderzeichen verwendet werden, so muss das Skript mit &#8220;chcp 1252 &gt; NUL&#8221; beginnen und mit &#8220;chcp 850 &gt; NUL&#8221; enden, da die zu benutzende Codepage für die Ausführung des Skriptes geändert werden muss. Natürlich sollte sie danach wieder auf den Standardwert zurückgesetzt werden. Die Befehle sind natürlich ohne die Anführungszeichen in die Batch-Datei einzutragen.</li>
</ol>
<div class="shr-publisher-169"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.pmd-media.com/2009/06/28/scripting-von-dateifreigaben/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced) (user agent is rejected)

Served from: blog.pmd-media.com @ 2012-02-05 14:53:41 -->
