<?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>Daten&#124;teiler</title>
	<atom:link href="http://www.datenteiler.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.datenteiler.de</link>
	<description>Kopieren als Kulturtechnik</description>
	<lastBuildDate>Tue, 23 Apr 2013 20:30:50 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Mit Avidemux Videos um 180° drehen</title>
		<link>http://www.datenteiler.de/mit-avidemux-videos-um-180-grad-drehen/</link>
		<comments>http://www.datenteiler.de/mit-avidemux-videos-um-180-grad-drehen/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 20:30:50 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Gnu/Linux]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=8953</guid>
		<description><![CDATA[Die beste Kamera ist immer die, die man gerade dabei hat. Das ist zur Zeit meist die Kamera, die im Handy oder im Smartphone ist, weil man das Telefon schnell am Start hat, um das Video aufzunehmen. Blöd nur, wenn das Video nach dem Dreh auf dem Kopf ist. Mit Avidemux kann man das Video [...]]]></description>
				<content:encoded><![CDATA[<p>Die beste Kamera ist immer die, die man gerade dabei hat. Das ist zur Zeit meist die Kamera, die im Handy oder im Smartphone ist, weil man das Telefon schnell am Start hat, um das Video aufzunehmen. Blöd nur, wenn das Video nach dem Dreh auf dem Kopf ist.</p>
<p><span id="more-8953"></span></p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2013/04/Video1.png"><img src="http://www.datenteiler.de/wp-content/uploads/2013/04/Video1-300x210.png" alt="Video1" width="300" height="210" class="aligncenter size-medium wp-image-8954" /></a></p>
<p>Mit Avidemux kann man das Video aber schnell wieder gerade rücken, also um 180° drehen. Nachdem man Avidemux installiert und gestartet hat, öffnet man das Video. Anschließend wählt man im Dropdown-Menü auf der linken Seite unter der Überschrift &#8220;Video&#8221; als Format &#8220;MPEG-4 ASP (XVID)&#8221; aus. Danach klickt man etwas darunter auf &#8220;Filter&#8221;. Unter den verfügbaren Filtern sucht man den Eintrag &#8220;Drehen&#8221;. Nach einem Klick darauf, wählt man aus, um wieviel Grad man das Viedeo drehen möchte. Ist es auf dem Kopf, muss man es um 180° drehen. Nachdem man mit &#8220;OK&#8221; das Drehen bestätigt hat, kann man sich unter &#8220;Vorschau&#8221; angucken, ob es geklappt hat und verlässt das Menü über den Button &#8220;Schließen&#8221;.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2013/04/Video2.png"><img src="http://www.datenteiler.de/wp-content/uploads/2013/04/Video2-300x144.png" alt="Video2" width="300" height="144" class="aligncenter size-medium wp-image-8957" /></a></p>
<p>Zurück im Hauptmenü sollte man man unter &#8220;Audio&#8221; noch &#8220;MP3 (Lame)&#8221; auswählen, wenn das Video mit Ton ist. Zum Schluss klickt man unter Format noch auf &#8220;AVI&#8221; und vergibt nach dem Drücken auf &#8220;Speichern&#8221; einen sinnvollen Namen wie &#8220;Video.avi&#8221;. Das wars schon, und man kann sich das Video nun angucken, ohne den Laptop auf den Kopf zu stellen, oder sich den Hals zu verrenken.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/mit-avidemux-videos-um-180-grad-drehen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu sinnvoll einrichten</title>
		<link>http://www.datenteiler.de/ubuntu-sinnvoll-einrichten/</link>
		<comments>http://www.datenteiler.de/ubuntu-sinnvoll-einrichten/#comments</comments>
		<pubDate>Sun, 07 Apr 2013 12:36:05 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Gnu/Linux]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=8821</guid>
		<description><![CDATA[Vor ein paar Tagen bin ich bei Michael Kofler auf den schon etwas älteren Artikel Ubuntu 12.04 narrensicher konfigurieren gestoßen, in dem er ein paar Tipps gibt, wie man ein Ubuntu für Menschen einrichtet, für die der Computer eher Mittel zum Zweck ist, um zum Beispiel Fotos zu sortieren, Musik zu verwalten, E-Mails und Briefe [...]]]></description>
				<content:encoded><![CDATA[<p>Vor ein paar Tagen bin ich bei Michael Kofler auf den schon etwas älteren Artikel <a href="http://kofler.info/blog/193/15/Ubuntu-12-04-narrensicher-konfigurieren/" target="_blank">Ubuntu 12.04 narrensicher konfigurieren</a> gestoßen, in dem er ein paar Tipps gibt, wie man ein Ubuntu für Menschen einrichtet, für die der Computer eher Mittel zum Zweck ist, um zum Beispiel Fotos zu sortieren, Musik zu verwalten, E-Mails und Briefe zu schreiben, oder ähnliche Dinge zu tun. Den ein oder anderen Tipp von ihm fand ich gut, andere weniger. Da er seinen Artikel mehr als Ideensammlung und weniger als unveränderliches Rezept verstanden wissen will, möchte ich hier auch ein paar Ideen sammeln, wie man Ubuntu 12.04 sinnvoll einrichten kann und würde mich über weitere Vorschläge freuen. Dabei werde ich, im Gegensatz zu Kofler, an der Grundeinstellung oder dem Konzept von Ubuntu wenig ändern. Unity bleibt also Unity und die Fensterknöpfe bleiben links. Durch das Design von Unity soll deutlich werden, dass Ubuntu etwas völlig anderes ist, als zum Beispiel das Windows, das man vorher genutzt hat, und dass man sich auf etwas Neues einlassen darf.</p>
<p><span id="more-8821"></span></p>
<p><strong>Installation</strong></p>
<p>Folgende Programme sollten auf dem Ubuntu-Rechner installiert sein, falls sie es nicht sowieso schon sind: <em>VLC</em> für Medien-Dateien jeder Art, <em>Pinta</em> als einfaches Zeichenprogramm, weil es sehr an Paint.Net erinnert und Gimp für viele Sachen zu mächtig ist. Programme wie das Plugin für den Flash-Player sind im Meta-Paket <em>ubuntu-restricted-extras</em> enthalten, das auch gleich das Abspielen von MP3s und anderer Audio- und Video-Formate sicher stellt. <em>Preload</em> ist ein Dämon, mit dem man die Rechnerperformance weiter verbessern kann. Anhand seiner eigenen Statistik sagt er vorher, welches Programm ein Benutzer vorraussichtlich starten wird, um den Code dieser Programme schonmal in den Speicher zu laden. Da die Installation über das Software Center zu lange dauert, passiert das am besten im Terminal:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get install</span> ubuntu-restricted-extras vlc pinta preload</pre></td></tr></table></div>

<p><strong>Einstellungen</strong></p>
<p>Den Anfang machen die Einstellungen, die etwas tiefer in das System eingreifen, wie zum Beispiel die Einstellung der <em>Swappiness</em>, die man auch unter den <a href="http://wiki.ubuntuusers.de/Tuning" target="_blank">Tuning-Tipps im Wiki von Ubuntuusers.de</a> nachschauen kann. Sie legt fest, ab wann Programme, die gerade ausgeführt werden, ihre Daten nicht mehr in den Arbeitsspeicher schreiben, sondern auf die Festplatte, was als Swapping bezeichnet wird. Ubuntu hat eine Swappiness von 60 voreingestellt, was bedeutet, dass bereits Daten vom Arbeitsspeicher auf die Festplatte verschoben werden, wenn der Arbeitsspeicher gerade mal zur Hälfte gefüllt ist. Wie die Swappiness des Systems eingestellt ist, kann man mit dem folgenden Befehl herausfinden:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">/</span>proc<span style="color: #000000; font-weight: bold;">/</span>sys<span style="color: #000000; font-weight: bold;">/</span>vm<span style="color: #000000; font-weight: bold;">/</span>swappiness</pre></td></tr></table></div>

<p>Damit Daten erste aus dem Arbeitsspeicher herausgeschoben werden, wenn er erst zu 80 oder 90 Prozent gefüllt ist, öffnet man die Konfigurationsdatei als Root:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> gedit <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>sysctl.conf</pre></td></tr></table></div>

<p>Darin fügt man dann am Ende der Datei folgende Zeile ein:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">vm.swappiness = <span style="color: #000000;">10</span></pre></td></tr></table></div>

<p>Nach einem Neustart werden die Änderungen übernommen. Vorher kann man noch das Gastkonto entfernen, wenn es nicht benötigt wird. Dazu muss  man im Abschnitt <code>[SeatDefaults]</code> der Konfigurationsdatei</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> gedit <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>lightdm<span style="color: #000000; font-weight: bold;">/</span>lightdm.conf</pre></td></tr></table></div>

<p>die folgende Anweisung einfügen:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">allow-guest=<span style="color: #c20cb9; font-weight: bold;">false</span></pre></td></tr></table></div>

<p><strong>Alle Programme auf einen Blick</strong></p>
<p>Ein Startmenü wird von vielen Benutzern sehr schnell vermisst, wenn es fehlt. Das ist zumindest einer der am häufigsten genannte Kritikpunkte an Windows 8. Ähnlich geht es Unity unter Ubuntu. Dabei ist es gar nicht schwer, sich auf der <a href="http://www.freesoftwaremagazine.com/articles/see_all_your_installed_applications_ubuntu_unity" target="_blank">Dash-Startseite alle Programme anzeigen</a> zu lassen. Man muss dazu nur unten auf das Symbol für &#8220;Anwendungen suchen&#8221; klicken und dann auf &#8220;Installiert &#8230; weitere Ergebnisse anzeigen&#8221;.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2013/04/Dash.jpg"><img src="http://www.datenteiler.de/wp-content/uploads/2013/04/Dash-300x175.jpg" alt="Dash" width="300" height="175" class="aligncenter size-medium wp-image-8829" /></a></p>
<p>Zugegebenermaßen fällt einem diese Möglichkeit nicht gleich ins Auge. Das ist vielleicht einer der Gründe, warum <a href="http://www.florian-diesch.de/software/classicmenu-indicator/" target="_blank">Florian Diesch</a> ein <em>Classic Menu</em> für den Indicator entwickelt hat, damit man beides nutzen kann, ein vertrautes Startmenü und die Dash-Startseite. Das <a href="http://wiki.ubuntuusers.de/Paketquellen_freischalten/PPA" target="_blank">PPA</a> für den <em>Classic Menu Indicator</em> wird folgendermaßen installiert:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> add-apt-repository ppa:diesch<span style="color: #000000; font-weight: bold;">/</span>testing</pre></td></tr></table></div>

<p>Da zusätzliche Fremdquellen wie PPAs das System gefährden können, muss man während der Installation nochmal mit der Enter-Taste bestätigen. Anschließend kann man mit der Installation beginnen und am Ende den <em>Classic Menu Indicator</em> starten.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get update</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get install</span> classicmenu-indicator
classicmenu-indicator <span style="color: #000000; font-weight: bold;">&amp;</span></pre></td></tr></table></div>

<p>Der <em>Classic Menu Indicator</em> trägt sich automatisch unter die Startprogramme ein, so dass er nach dem nächsten Neustart automatisch wieder zur Verfügung steht. Das Symbol für das <em>Classic Menu</em> sieht man jetzt bei den anderen Indikatoren oben rechts auf dem Desktop.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2013/04/Classic-Menu-Indicator.jpg"><img src="http://www.datenteiler.de/wp-content/uploads/2013/04/Classic-Menu-Indicator-220x300.jpg" alt="Classic-Menu-Indicator" width="220" height="300" class="aligncenter size-medium wp-image-8836" /></a></p>
<p><strong>Ein paar Kleinigkeiten noch</strong></p>
<p>Zum Schluss bleiben noch ein paar Kleinigkeiten. In <em>LibreOffice</em> sollte man die Endungen DOC standardäßig für den Writer und XLS standardäßig für Calc einstellen, damit die Empfänger die Dokumente auch noch mit MS Office 2003 öffnen können. Außerdem kann man noch <em>Ubuntu One</em> einrichten, einen Webdienst zur Datensicherung mit 5 GB Speicher, den man mitnehmen sollte, falls man kein Dropbox-Account hat, oder für Backups mit Déjà Dup. Installiert man dazu noch die entsprechende App von Ubuntu One auf dem Smartphone, kann man einfach Dateien zwischen PC und Handy austauschen. Mit <em>Rhythmbox</em> kann man die Verwaltung für Musik, Internet-Radio, Podcasts und Ubuntu One Music Store einstellen. Zum Schluss kann man noch <em>Shotwell</em> zur Verwaltung der Fotos und Bilder auf dem Rechner schonmal einrichten. Außerdem sollte man noch einen Blick auf die Energiesparmodi werfen, um zu prüfen, ob alles passt. Auf kleinen Bildschirmen kann das Startmenü von Unity stören. Unter &#8220;Systemeinstellungen&#8221;, &#8220;Darstellung&#8221; und &#8220;Verhalten&#8221; kann man die &#8220;Autohide&#8221;-Funktion einstellen, damit das Startmenü ausgeblendet wird.</p>
<p><strong>Fernwartung</strong></p>
<p>Falls Support gefragt ist, sollte man noch ein Fernwartungs-Tool installieren. Am einfachsten ist da sicherlich <a href="http://www.teamviewer.com/de/download/linux.aspx" target="_blank">TeamViewer</a> zu bedienen und zu installieren. Nachdem man auf den Download-Button auf der Webseite gedrückt hat, geht die Installation problemlos über das Ubuntu Software-Center. Wenn man TeamViewer aus irgendwelchen Gründen nicht möchte, bleibt noch die etwas aufwändigere Einrichtung von <a href="http://wiki.ubuntuusers.de/VNC" target="_blank">VNC</a>. </p>
<p><strong>Schluss</strong></p>
<p>Da jeder Benutzer andere Bedürfnisse hat, was er mit seinem Rechner machen will, ist auch jedes Ubuntu anders einzurichten. Aber vielleicht kann man bei der Einrichtung von der ein oder anderen Idee aus diesem Artikel profitieren. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/ubuntu-sinnvoll-einrichten/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Eine Windows Desktop-App für Unity</title>
		<link>http://www.datenteiler.de/eine-windows-desktop-app-fur-unity/</link>
		<comments>http://www.datenteiler.de/eine-windows-desktop-app-fur-unity/#comments</comments>
		<pubDate>Tue, 12 Mar 2013 19:20:45 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Gnu/Linux]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=8759</guid>
		<description><![CDATA[Als kleinen Spaß und für ein bisschen Windows 8-Feeling habe ich mir in Ubuntu 12.10 unter Unity eine Windows Desktop-App gebastelt. In Windows 8 scheint der Desktop eine weitere App unter vielen zu sein, die man von der Startseite aus aufrufen kann. So eine Startseite gibt es in Unity zwar nicht, dafür aber den Launcher, [...]]]></description>
				<content:encoded><![CDATA[<p>Als kleinen Spaß und für ein bisschen Windows 8-Feeling habe ich mir in Ubuntu 12.10 unter Unity eine Windows Desktop-App gebastelt. In Windows 8 scheint der Desktop eine weitere App unter vielen zu sein, die man von der Startseite aus aufrufen kann. So eine Startseite gibt es in Unity zwar nicht, dafür aber den Launcher, eine Seitenleiste, aus der man Programme aufrufen kann. Da es einen Windows-Desktop unter Ubuntu bekanntlich nicht gibt, habe ich mein altes XP in einer VirtualBox installiert. Einen Virenscanner und ähnliche Performance-Bremsen habe ich weggelassen, da ich die Netzwerkverbindung zur virtuellen Maschine gekappt habe. Der Datenaustausch erfolgt über einen gemeinsamen Ordner, den ich mit den Guest Additions eingerichtet habe. Außerdem habe ich den virtuellen Prozessor auf 80 Prozent gedrosselt und virtuellen RAM gibt es nur 256 MB. Da ich in der virtuellen Maschine nicht surfe, Filme gucke oder andere rechenintensive Sachen mache, ist das für XP in meinem Fall ausreichend.</p>
<p><span id="more-8759"></span></p>
<p>Den virtuellen Desktop mit XP benötige ich eigentlich nur für ein paar kleinere Programme, die es für Gnu/Linux nicht gibt, oder um schnell mal die PowerShell zu starten, die ich beruflich gerne benutze.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2013/03/Bildschirmfoto_Windows-Desktop.png"><img src="http://www.datenteiler.de/wp-content/uploads/2013/03/Bildschirmfoto_Windows-Desktop-300x175.png" alt="Bildschirmfoto_Windows-Desktop" width="300" height="175" class="aligncenter size-medium wp-image-8771" /></a></p>
<p>Für den Launcher habe ich eine Datei mit folgendem Inhalt angelegt und unter <em>.local/share/applications</em> in meinem Home-Verzeichnis als Textdatei <em>Windows.desktop</em> abgespeichert:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>Desktop Entry<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #007800;">Type</span>=Application
<span style="color: #007800;">Name</span>=Windows Desktop
<span style="color: #007800;">Comment</span>=Windows Desktop
<span style="color: #007800;">Exec</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>virtualbox<span style="color: #000000; font-weight: bold;">/</span>VirtualBox <span style="color: #660033;">--startvm</span> <span style="color: #ff0000;">&quot;Windows XP&quot;</span>
<span style="color: #007800;">Icon</span>=<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>christian<span style="color: #000000; font-weight: bold;">/</span>.icons<span style="color: #000000; font-weight: bold;">/</span>WindowsXP-Icon.png</pre></td></tr></table></div>

<p>Den Namen und den Kommentar kann man festlegen, wie man möchte. Als Icon habe ich ein selbst gemachtes Bildschirmfoto des Windows-Desktops genommen und als 128&#215;128 Pixel große PNG-Datei unter <em>.icons</em> abgespeichert. Interessant ist der Eintrag mit Exec: Hier steht der Pfad zum Kommandozeilen-Programm von VirtualBox, das gleich mit der Option &#8220;&#8211;startvm&#8221; die virtuelle Maschine startet.</p>
<p>Ein Icon aus dem Launcher zu entfernen ist einfach, ein neues anzulegen schon schwieriger. Zuerst benötigt man eine Übersicht, welche Icons schon alle im Launcher sind. Dazu gibt man folgenden Befehl ein:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gsettings get com.canonical.Unity.Launcher favorites</pre></td></tr></table></div>

<p>Anschließend erhält man folgendes Ergebnis:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'application://firefox.desktop'</span>, <span style="color: #ff0000;">'application://nautilus-home.desktop'</span>, <span style="color: #ff0000;">'application://ubuntu-software-center.desktop'</span>, <span style="color: #ff0000;">'application://gnome-control-center.desktop'</span>, <span style="color: #ff0000;">'unity://running-apps'</span>, <span style="color: #ff0000;">'application://gnome-terminal.desktop'</span>, <span style="color: #ff0000;">'unity://expo-icon'</span>, <span style="color: #ff0000;">'unity://devices'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span></pre></td></tr></table></div>

<p>Mit einem ähnlichen Befehl, aber <em>set</em> statt <em>get</em>, ergänzt man die Liste um den Eintrag <em>&#8216;Windows.desktop&#8217;</em>:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gsettings <span style="color: #000000; font-weight: bold;">set</span> com.canonical.Unity.Launcher favorites <span style="color: #ff0000;">&quot;['application://firefox.desktop', 'application://nautilus-home.desktop', 'application://ubuntu-software-center.desktop', 'application://gnome-control-center.desktop', 'unity://running-apps', 'application://gnome-terminal.desktop', 'unity://expo-icon', 'unity://devices', 'Windows.desktop']&quot;</span></pre></td></tr></table></div>

<p>Außerdem muss man um die eckigen Klammern herum die Liste noch mit Anführungszeichen umschließen. Am Ende der Liste steht dann in einfachen Anführungszeichen der Eintrag <em>&#8216;Windows.desktop&#8217;</em>. Nach der Eingabe des Befehls erscheint der Eintrag im Launcher und der Windows-Desktop kann mit einem Klick gestartet werden. Wenn man das XP nicht herunterfährt, sondern den Zustand der virtuellen Maschine speichert, hat man den Windows-Desktop nach dem nächsten Klick auf das Icon schnell wieder am Start.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/eine-windows-desktop-app-fur-unity/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Python 3 for Metro</title>
		<link>http://www.datenteiler.de/python-3-for-metro/</link>
		<comments>http://www.datenteiler.de/python-3-for-metro/#comments</comments>
		<pubDate>Sun, 13 Jan 2013 19:07:12 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=8700</guid>
		<description><![CDATA[Über den Podcast import this bin ich auf den Vortrag Metro-Programmierung mit Python von Martin von Löwis auf der Pycon DE 2012 gestoßen. Metro hieß mal das Design mit den Kacheln auf dem Startbildschirm von Windows 8, bevor Microsoft es in Modern UI umbenannt hat. Der Titel &#8220;Python 3 for Metro&#8221; ist etwas irreführend, weil [...]]]></description>
				<content:encoded><![CDATA[<p>Über den Podcast <a href="http://www.import-this.de/episode/pycon-de/" target="_blank">import this</a> bin ich auf den Vortrag <a href="http://pyvideo.org/video/1444/metro-programmierung-mit-python" target="_blank">Metro-Programmierung mit Python</a> von Martin von Löwis auf der Pycon DE 2012 gestoßen. Metro hieß mal das Design mit den Kacheln auf dem Startbildschirm von Windows 8, bevor Microsoft es in Modern UI umbenannt hat. Der Titel &#8220;Python 3 for Metro&#8221; ist etwas irreführend, weil man meinen könnte, dass sich mit Python Apps für Metro respektive Modern UI erstellen lassen. Das funktioniert aber leider nicht. &#8220;Python 3 for Metro&#8221; ist eher dazu gedacht, Python auf Windows Phone und Windows RT zu bringen, unter denen man keine Win32-basierten Desktop-Programme installieren kann. Bei allen anderen Versionen von Windows 8 kann man Python weiter auf die alte Art installieren.</p>
<p><span id="more-8700"></span></p>
<p>Apps für den Startbildschirm werden über den Microsoft Store installiert. In einem deutschsprachigen Store findet man zur Zeit unter dem Suchbegriff Python nur ein Informatik Tutorial, also nicht gerade viel. Wo ist also &#8220;Python 3 for Metro&#8221;? Das wird als englischsprachige App nicht angezeigt. Um das zu ändern, öffnet man im Store die Charm Bar, indem man mit der Maus an den rechten Bildschirmrand fährt oder die Windows- und die C-Taste drückt, und klickt dann auf &#8220;Einstellungen&#8221;.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2013/01/AlleAppsAnzeigen2.png"><img src="http://www.datenteiler.de/wp-content/uploads/2013/01/AlleAppsAnzeigen2-300x187.png" alt="AlleAppsAnzeigen2" width="300" height="187" class="aligncenter size-medium wp-image-8711" /></a> </p>
<p>In den &#8220;Einstellungen&#8221; klickt man dann nochmal auf &#8220;Einstellungen&#8221;:</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2013/01/AlleAppsAnzeigen3.png"><img src="http://www.datenteiler.de/wp-content/uploads/2013/01/AlleAppsAnzeigen3-300x187.png" alt="AlleAppsAnzeigen3" width="300" height="187" class="aligncenter size-medium wp-image-8716" /></a></p>
<p>Um anschließend den Schalter &#8220;Apps in den bevorzugen Sprachen schneller finden&#8221; auf &#8220;Nein&#8221; zu stellen:</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2013/01/AlleAppsAnzeigen1.png"><img src="http://www.datenteiler.de/wp-content/uploads/2013/01/AlleAppsAnzeigen1-300x187.png" alt="AlleAppsAnzeigen1" width="300" height="187" class="aligncenter size-medium wp-image-8719" /></a></p>
<p>Eine neue Suche im Store ergibt dann mehrere Treffer zum Stichwort Python, neben &#8220;Python 3 for Metro&#8221; auch das Buch &#8220;Dive into Python&#8221; oder den &#8220;Code Writer&#8221; als Apps. Nach der Installation findet man die App auf dem Startbildschirm, wo sie mit einem einfachen Klick gestartet werden kann.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2013/01/py4metro.png"><img src="http://www.datenteiler.de/wp-content/uploads/2013/01/py4metro-300x187.png" alt="py4metro" width="300" height="187" class="aligncenter size-medium wp-image-8726" /></a></p>
<p>Wie man bei der App in Action sieht, funktionieren viele Sachen schon ganz gut, zum Beispiel die Python-Konsole als Taschenrechner, oder die Print-Funktion. Die Textausgabe mit &#8220;Spam&#8221; und &#8220;Eggs&#8221; liefert <a href="http://www.python-kurs.eu/python3_for-schleife.php" target="_blank">ein Skript</a>, das ich gestartet habe.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="python" style="font-family:monospace;">edibles <span style="color: #66cc66;">=</span> <span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;ham&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">&quot;spam&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">&quot;eggs&quot;</span><span style="color: #66cc66;">,</span><span style="color: #483d8b;">&quot;nuts&quot;</span><span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">for</span> food <span style="color: #ff7700;font-weight:bold;">in</span> edibles:
    <span style="color: #ff7700;font-weight:bold;">if</span> food <span style="color: #66cc66;">==</span> <span style="color: #483d8b;">&quot;spam&quot;</span>:
        <span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;No more spam please!&quot;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">continue</span>
    <span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Great, delicious &quot;</span> + food<span style="color: black;">&#41;</span>
    <span style="color: #808080; font-style: italic;"># here can be the code for enjoying our food :-)</span>
<span style="color: #ff7700;font-weight:bold;">else</span>:
    <span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;I am so glad: No spam!&quot;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Finally, I finished stuffing myself&quot;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>Um ein Skript zu starten klickt man mit der rechten Maustaste auf den Bildschirm und wählt dann &#8220;Run File&#8221;. Die ein oder andere Funktion fehlt allerdings noch, wie zum Beispiel <code>input()</code>. Die Eingabe von der Konsole ist noch nicht implementiert. Wenn man eine eigene Funktion definieren will, kann man auch noch keine Tab-Taste benutzen, um die Code-Zeilen einzurücken. Das geht nur mit der Leertaste.</p>
<p>Auf Geräten mit Windows Phone und Windows RT ist &#8220;Python 3 for Metro&#8221; sicherlich eine gute Sache, da man sonst keine Chance hat, Python-Code auf diesen Geräten zu schreiben. Unter allen anderen Windows-Versionen ist es auf jeden Fall ein schönes Feature, aber man wird doch eher die original installierte Python-Version verwenden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/python-3-for-metro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Access-Datenbanken mit Powershell durchsuchen</title>
		<link>http://www.datenteiler.de/access-datenbanken-mit-powershell-durchsuchen/</link>
		<comments>http://www.datenteiler.de/access-datenbanken-mit-powershell-durchsuchen/#comments</comments>
		<pubDate>Tue, 08 Jan 2013 20:12:55 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=8601</guid>
		<description><![CDATA[In einer von Microsoft Produkten dominierten Arbeitsumgebung ist MS Access ein ziemlich geniales Programm, um für Systemadministratoren einfach strukturierte Daten übersichtlich aufzubereiten. Bei der Organisation großer Datenmengen, wie sie bei der Verwaltung von Hardware, Benutzern, Patchfeldern und so weiter anfallen, ist Excel mit der Aufbereitung oft überfordert. Meist sind es aber auch noch nicht genug [...]]]></description>
				<content:encoded><![CDATA[<p>In einer von Microsoft Produkten dominierten Arbeitsumgebung ist MS Access ein ziemlich geniales Programm, um für Systemadministratoren einfach strukturierte Daten übersichtlich aufzubereiten. Bei der Organisation großer Datenmengen, wie sie bei der Verwaltung von Hardware, Benutzern, Patchfeldern und so weiter anfallen, ist Excel mit der Aufbereitung oft überfordert. Meist sind es aber auch noch nicht genug Daten, dass sich das Aufsetzen eines SQL-Servers lohnt. Außerdem liegt es für Administratoren nahe, Informationen aus den Datenbanken mit der Powershell zu verarbeiten. Doch hier liegt der Hund begraben, denn das Thema ist nicht ganz so einfach. Am Ende des Artikels zeige ich, wie man Access-Datenbanken mit der Powershell durchsucht, auch ohne, dass MS Access installiert ist.</p>
<p><span id="more-8601"></span></p>
<p><strong>Die Powershell und Datenbank-Provider</strong></p>
<p>Während man den ersten Gehversuch startet, kann man auch schon gleich auf Probleme stoßen, zum Beispiel wie &#8220;Der Provider ist nicht auf dem lokalen Computer registriert&#8221;. Den entsprechenden Provider der Microsoft Access Database Engine zu installieren, oder Betriebssystemarchitektur und Office so anzugleichen, dass beide entweder 32- oder 64-Bit sind, ist besonders in größeren Umgebungen kaum umsetzbar. Gerade hier läuft häufig ein 32-Bit Office auf einem 64-Bit Betriebssystem wie Windows 7 Enterprise. </p>
<p>Sollte der entsprechende Provider installiert sein, benötigt man in so einer Umgebung häufig den Connection-String</p>
<pre>"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$DatabaseName;"</pre>
<p>Ohne den Provider bleibt für Datenbanken mit DSN-Struktur (Data Source Name) noch</p>
<pre>"Provider = Microsoft.Jet.OLEDB.4.0;Data Source = $DatabaseName;"</pre>
<p>In beiden Fällen muss man auf einem 64-Bit-System darauf achten, dass man die 32-Bit-Version der Powershell nimmt, wenn MS Access auch als 32-Bit_Version vorliegt, was der Normalfall sein dürfte. Beide Provider haben in meinem Fall nicht funktioniert. Zum Testen habe ich eine <a href="http://www.datenteiler.de/wp-content/uploads/2013/01/Datenbank.zip">sehr simple Datenbank &#8220;Datenbank.accdb&#8221; mit MS Access 2007</a> erstellt. </p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2013/01/Datenbank.png"><img src="http://www.datenteiler.de/wp-content/uploads/2013/01/Datenbank-300x179.png" alt="Datenbank" width="300" height="179" class="aligncenter size-medium wp-image-8608" /></a>&#8220;</p>
<p>Sie besteht aus den beiden Tabellen &#8220;User&#8221; und &#8220;Customer&#8221; und den Spalten &#8220;Login&#8221;, &#8220;Abteilung&#8221;, &#8220;Funktion&#8221; und &#8220;Name&#8221;. Mit der Powershell will ich aus der Tabelle &#8220;User&#8221; die Namen aller &#8220;Mitarbeiter&#8221; ausgeben. <a href="http://blogs.technet.com/b/heyscriptingguy/archive/2006/10/02/how-can-i-use-windows-powershell-to-pull-records-from-a-microsoft-access-database.aspx" target="_blank">Unterstützen soll mich dabei Scripting Guy</a>.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #800080;">$path</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;C:\Users\Public\Datenbank.accdb&quot;</span>
<span style="color: #800080;">$adOpenStatic</span> <span style="color: pink;">=</span> <span style="color: #804000;">3</span>
<span style="color: #800080;">$adLockOptimistic</span> <span style="color: pink;">=</span> <span style="color: #804000;">3</span></pre></td></tr></table></div>

<p>Der Pfad zur Datenbank kommt in die Variable <code>$path</code>, anschließend weise ich zwei Variablen den Wert 3 zu. Ich benötige die beiden Variablen später, wenn ich Daten aus der Datenbank abrufe.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #800080;">$cn</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">new-object</span> <span style="color: #008080; font-style: italic;">-comobject</span> ADODB.Connection
<span style="color: #800080;">$rs</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">new-object</span> <span style="color: #008080; font-style: italic;">-comobject</span> ADODB.Recordset
<span style="color: #800080;">$cn</span>.Open<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Provider = Microsoft.Jet.OLEDB.4.0;Data Source = $path&quot;</span><span style="color: #000000;">&#41;</span></pre></td></tr></table></div>

<p>Danach erstelle ich mit dem Cmdlet <code>New-Object</code> zwei Referenzen auf die COM-Objekte <code>ADODB.Connection</code> und <code>ADODB.Recordset</code>, um auf die Datenbank überhaut zugreifen zu können. Der Versuch danach, die Datenbank mit dem Provider <code>Microsoft.Jet.OLEDB.4.0</code> zu öffnen, geht allerdings in die Hose, der Provider erkennt die ACCDB-Datenbank nicht:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="text" style="font-family:monospace;">Ausnahme beim Aufrufen von &quot;Open&quot; mit 1 Argument(en):  &quot;Nicht erkennbares Datenbankformat 'C:\Users\Public\Datenbank.ac
cdb'.&quot;
Bei Zeile:1 Zeichen:9
+ $cn.Open &lt;&lt;&lt;&lt; (&quot;Provider = Microsoft.Jet.OLEDB.4.0;Data Source = $path&quot;)
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ComMethodTargetInvocation</pre></td></tr></table></div>

<p>Stattdessen den Connection-String <code>Provider = Microsoft.ACE.OLEDB.12.0;</code> zu nehmen, funktioniert in diesem Fall, 64-Bit-Betriebssystem mit 32-Bit-Office ohne entsprechenden ACE-Provider, leider auch nicht:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #800080;">$cn</span>.Open<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Provider = Microsoft.ACE.OLEDB.12.0;Data Source = $path&quot;</span><span style="color: #000000;">&#41;</span>
<span style="color: #800080;">$rs</span>.Open<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Select * From User&quot;</span><span style="color: pink;">,</span> <span style="color: #800080;">$cn</span><span style="color: pink;">,</span><span style="color: #800080;">$adOpenStatic</span><span style="color: pink;">,</span><span style="color: #800080;">$adLockOptimistic</span><span style="color: #000000;">&#41;</span></pre></td></tr></table></div>

<p>Der String scheint auch erstmal zu funktionieren, kracht dann aber beim Öffnen des Recordsets:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="text" style="font-family:monospace;">Ausnahme beim Aufrufen von &quot;Open&quot; mit 4 Argument(en):  &quot;Syntaxfehler in FROM-Klausel.&quot;
Bei Zeile:1 Zeichen:9
+ $rs.Open &lt;&lt;&lt;&lt; (&quot;Select * From User&quot;, $cn,$adOpenStatic,$adLockOptimistic)
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ComMethodTargetInvocation</pre></td></tr></table></div>

<p><a href="http://www.datenteiler.de/wp-content/uploads/2013/01/OLEDB-Fehler2.png"><img src="http://www.datenteiler.de/wp-content/uploads/2013/01/OLEDB-Fehler2-300x193.png" alt="OLEDB-Fehler2" width="300" height="193" class="aligncenter size-medium wp-image-8603" /></a></p>
<p><strong>DSN-lose Verbindungen in der Powershell</strong></p>
<p>Die Lösung heißt hier DSN-lose Verbindungen, also eine, die keinen Datenquellennamen (Data Source Name = DSN) verwendet. Das vollständige Skript sieht dann so aus:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #800080;">$path</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;C:\Users\Public\Datenbank.accdb&quot;</span>
<span style="color: #800080;">$adOpenStatic</span> <span style="color: pink;">=</span> <span style="color: #804000;">3</span>
<span style="color: #800080;">$adLockOptimistic</span> <span style="color: pink;">=</span> <span style="color: #804000;">3</span>
&nbsp;
<span style="color: #800080;">$cn</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">new-object</span> <span style="color: #008080; font-style: italic;">-comobject</span> ADODB.Connection
<span style="color: #800080;">$rs</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">new-object</span> <span style="color: #008080; font-style: italic;">-comobject</span> ADODB.Recordset
&nbsp;
<span style="color: #800080;">$cn</span>.Open<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=$path&quot;</span><span style="color: #000000;">&#41;</span>
<span style="color: #800080;">$rs</span>.Open<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Select * From User&quot;</span><span style="color: pink;">,</span> <span style="color: #800080;">$cn</span><span style="color: pink;">,</span><span style="color: #800080;">$adOpenStatic</span><span style="color: pink;">,</span><span style="color: #800080;">$adLockOptimistic</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #800080;">$rs</span>.MoveFirst<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">do</span> <span style="color: #000000;">&#123;</span>
    <span style="color: #800080;">$funktion</span> <span style="color: pink;">=</span> <span style="color: #800080;">$rs</span>.Fields.Item<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Funktion&quot;</span><span style="color: #000000;">&#41;</span>.Value;
    <span style="color: #800080;">$name</span>  <span style="color: pink;">=</span> <span style="color: #800080;">$rs</span>.Fields.Item<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Name&quot;</span><span style="color: #000000;">&#41;</span>.Value;
&nbsp;
    <span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$funktion</span> <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Mitarbeiter&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><span style="color: #008080; font-weight: bold;">write</span> <span style="color: #800080;">$Name</span><span style="color: #000000;">&#125;</span>
    <span style="color: #800080;">$rs</span>.MoveNext<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#125;</span> 
<span style="color: #0000FF;">until</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$rs</span>.EOF <span style="color: #FF0000;">-eq</span> <span style="color: #800080;">$True</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #800080;">$rs</span>.close<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #800080;">$cn</span>.close<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span></pre></td></tr></table></div>

<p>Mit dem Befehl <code>rs.Open()</code> wird die SQL-Abfrage formuliert, die hier die komplette Tabelle &#8220;User&#8221; einliest. Danach wird der Recordset an den Anfang der Tabelle gesetzt. In der anschließenden Do-Schleife wird der Inhalt der einzelnen Felder aus den Spalten &#8220;Funktion&#8221; und &#8220;Name&#8221; an entsprechenden Variablen übergeben. Die If-Bedingung siebt dann alle Mitarbeiter heraus, deren Name dann in der Konsole ausgegeben wird. Die Schleife endet, wenn das Ende des Recordsets (EOF) erreicht ist. Danach werden Connection und Recordset noch geschlossen.</p>
<p><strong>Aus den Daten eine CSV-Datei erstellen</strong></p>
<p>So ein Skript ergibt vor allem erst dann Sinn, wenn man die Daten weiterverarbeitet, z.B. in einer CSV-Datei, die man dann wiederum auch weiter verarbeiten kann:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #800080;">$file</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;C:\Users\Public\Mitarbeiter_Produktion.csv&quot;</span>
<span style="color: #800080;">$path</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;C:\Users\Public\Datenbank.accdb&quot;</span>
&nbsp;
<span style="color: #008000;"># Erstelle leere CSV-Datei</span>
<span style="color: #008080; font-weight: bold;">write-host</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">export-csv</span> <span style="color: #800080;">$file</span> <span style="color: #008080; font-style: italic;">-Delimiter</span> <span style="color: #800000;">&quot;;&quot;</span>
&nbsp;
<span style="color: #800080;">$adOpenStatic</span> <span style="color: pink;">=</span> <span style="color: #804000;">3</span>
<span style="color: #800080;">$adLockOptimistic</span> <span style="color: pink;">=</span> <span style="color: #804000;">3</span>
&nbsp;
<span style="color: #800080;">$cn</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">new-object</span> <span style="color: #008080; font-style: italic;">-comobject</span> ADODB.Connection
<span style="color: #800080;">$rs</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">new-object</span> <span style="color: #008080; font-style: italic;">-comobject</span> ADODB.Recordset
&nbsp;
<span style="color: #800080;">$cn</span>.Open<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=$path&quot;</span><span style="color: #000000;">&#41;</span>
<span style="color: #800080;">$rs</span>.Open<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Select * From User&quot;</span><span style="color: pink;">,</span> <span style="color: #800080;">$cn</span><span style="color: pink;">,</span><span style="color: #800080;">$adOpenStatic</span><span style="color: pink;">,</span><span style="color: #800080;">$adLockOptimistic</span><span style="color: #000000;">&#41;</span>
&nbsp;
&nbsp;
<span style="color: #800080;">$rs</span>.MoveFirst<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">do</span> <span style="color: #000000;">&#123;</span>
    <span style="color: #800080;">$funktion</span> <span style="color: pink;">=</span> <span style="color: #800080;">$rs</span>.Fields.Item<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Funktion&quot;</span><span style="color: #000000;">&#41;</span>.Value;
    <span style="color: #800080;">$name</span>  <span style="color: pink;">=</span> <span style="color: #800080;">$rs</span>.Fields.Item<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Name&quot;</span><span style="color: #000000;">&#41;</span>.Value;
    <span style="color: #800080;">$login</span>  <span style="color: pink;">=</span> <span style="color: #800080;">$rs</span>.Fields.Item<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Login&quot;</span><span style="color: #000000;">&#41;</span>.Value;
    <span style="color: #800080;">$abteilung</span> <span style="color: pink;">=</span> <span style="color: #800080;">$rs</span>.Fields.Item<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Abteilung&quot;</span><span style="color: #000000;">&#41;</span>.Value;
&nbsp;
    <span style="color: #008000;"># Schreibe die Ausgabe zeilenweise in die CSV-Datei:</span>
    <span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$abteilung</span> <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Produktion&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
        <span style="color: #800080;">$NewLine</span> <span style="color: pink;">=</span> <span style="color: #800000;">'{0};{1};{2}'</span> <span style="color: #FF0000;">-f</span> <span style="color: #800080;">$login</span><span style="color: pink;">,</span><span style="color: #800080;">$name</span><span style="color: pink;">,</span><span style="color: #800080;">$funktion</span> 
        <span style="color: #800080;">$NewLine</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">add-content</span> <span style="color: #008080; font-style: italic;">-path</span> <span style="color: #800080;">$file</span> 
    <span style="color: #000000;">&#125;</span>
    <span style="color: #800080;">$rs</span>.MoveNext<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#125;</span> 
&nbsp;
<span style="color: #0000FF;">until</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$rs</span>.EOF <span style="color: #FF0000;">-eq</span> <span style="color: #800080;">$True</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #800080;">$rs</span>.close<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #800080;">$cn</span>.close<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span></pre></td></tr></table></div>

<p>Das Ergebnis lässt sich dann in Excel betrachten: </p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2013/01/Daten2Excel.png"><img src="http://www.datenteiler.de/wp-content/uploads/2013/01/Daten2Excel-300x169.png" alt="Daten2Excel" width="300" height="169" class="aligncenter size-medium wp-image-8612" /></a></p>
<p>Bei Powershellpraxis.de gibt es übrigens ein <a href="http://www.powershellpraxis.de/index.php/datenzugriffe-ueber-ado-net/access" target="_blank">interessantes Spezial zu Access und Powershell</a>.</p>
<p><strong>Auf Access-Datenbanken zugreifen ohne MS Access</strong></p>
<p>Beide Skripte sollten auch funktionieren, wenn man kein MS Access unter Windows installiert hat. Dazu benötigt man allerdings die <a href="http://www.microsoft.com/de-de/download/details.aspx?id=13255" target="_blank">Microsoft Access Database Engine 2010 Redistributable</a>. Wobei man auf die Systemarchitektur achten muss, also die Datei mit X64 am Ende herunterlädt, wenn man ein 64-Bit-Windows hat. Für das Erstellen von CSV-Dateien braucht man glücklicherweise kein Excel. Beim Textimport in LibreOffice muss man allerdings darauf achten, dass der Zeichensatz UTF-8 ist.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/access-datenbanken-mit-powershell-durchsuchen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vim und Powershell</title>
		<link>http://www.datenteiler.de/vim-und-powershell/</link>
		<comments>http://www.datenteiler.de/vim-und-powershell/#comments</comments>
		<pubDate>Sat, 08 Dec 2012 20:03:58 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=8519</guid>
		<description><![CDATA[Zur Zeit beschäftige ich mich damit, die Powershell mit Open Source-Werkzeugen zu erweitern. Im ersten Versuch habe ich mit Hilfe der Poppler-Utils Text aus PDF-Dateien extrahiert und dafür ein Modul erstellt. Was der Powershell fehlt, ist ein leistungsfähiger Editor für die Kommandozeile. Hier kommt Vim ins Spiel, ein besonders unter Unix- und Gnu/Linux-Nerds beliebter Editor, [...]]]></description>
				<content:encoded><![CDATA[<p>Zur Zeit beschäftige ich mich damit, die Powershell mit Open Source-Werkzeugen zu erweitern. Im ersten Versuch habe ich <a href="http://www.datenteiler.de/ein-powershell-modul-konvertiert-pdfs-zu-text/">mit Hilfe der Poppler-Utils Text aus PDF-Dateien extrahiert</a> und dafür ein Modul erstellt. Was der Powershell fehlt, ist ein leistungsfähiger Editor für die Kommandozeile. Hier kommt <a href="http://de.wikipedia.org/wiki/Vim">Vim</a> ins Spiel, ein besonders unter Unix- und Gnu/Linux-Nerds beliebter Editor, der seit 1991 aktiv entwickelt wird und für viele weitere Betriebssysteme verfügbar ist, auch für Windows.</p>
<p><span id="more-8519"></span></p>
<p>Um Vim auf den Windows-PC zu bringen, lädt man den Installer von der <a href="http://www.vim.org/download.php#pc">Vim-Homepage</a> herunter und führt ihn aus. Wenn man Vim benutzen, aber nicht installieren will, kann man auch <a href="http://portableapps.com/apps/development/gvim_portable">gVim aus den PortableApps</a> nehmen. Leider fehlt im Paket die Konsolen-Version, die man aber einzeln als <a href="http://www.vim.org/download.php#pc">Win32 console executable</a> von der Vim-Homepage herunterladen kann. Aus der Zip-Datei extrahiert man dann die ausführbare Datei <code>vim.exe</code> und kopiert sie nach <code>gVimPortable\App\vim\vim73</code>.</p>
<p>Damit Vim und Powershell sich kennenlernen, trägt man den Pfad zu Vim in die Profil-Datei der Powershell ein. Zum Öffnen der Profil-Datei gibt man innerhalb der Powershell zum Beispiel <code>notepad $profile</code> ein, und nimmt folgenden, <a href="http://juliankay.com/development/setting-up-vim-to-work-with-powershell/">leicht abgewandelt Code von Julian</a>, wobei man die Variable <code>$VIMPATH</code> entsprechend anpassen muss, je nachdem, wo sich die Datei <code>vim.exe</code> auf dem System befindet:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #800080;">$VIMPATH</span>    <span style="color: pink;">=</span> <span style="color: #800000;">&quot;$env:Programfiles\Vim\vim73\vim.exe&quot;</span>
&nbsp;
<span style="color: #008080; font-weight: bold;">Set-Alias</span> vi   <span style="color: #800080;">$VIMPATH</span>
<span style="color: #008080; font-weight: bold;">Set-Alias</span> vim  <span style="color: #800080;">$VIMPATH</span>
&nbsp;
<span style="color: #008000;"># for editing your PowerShell profile</span>
<span style="color: #0000FF;">Function</span> Edit<span style="color: pink;">-</span>Profile
<span style="color: #000000;">&#123;</span>
    vim <span style="color: #800080;">$profile</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #008000;"># for editing your Vim settings</span>
<span style="color: #0000FF;">Function</span> Edit<span style="color: pink;">-</span>Vimrc
<span style="color: #000000;">&#123;</span>
    vim <span style="color: #800080;">$home</span>\_vimrc
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>Nun fehlt noch die Konfigurationsdatei <code>vimrc</code>. Da ich in der Profil-Datei eine Funktion zum editieren der <code>vimrc</code> definiert habe, kann ich, spätestens in der nächsten neuen Powershell-Sitzung das Cmdlet <code>Edit-Vimrc</code> nutzen, sowie <code>Edit-Profile</code>, um die Profil-Datei in Zukunft zu bearbeiten. Es gibt eine Menge Möglichkeiten, Vim mit Hilfe der <code>vimrc</code> zu erweitern. In dem Beispiel ist der Shell-Befehl mit der Powershell verknüpft und das <a href="http://de.wikipedia.org/wiki/Syntaxhervorhebung">Syntax-Highlighting</a> aktiviert.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #008080; font-weight: bold;">set</span> shell<span style="color: pink;">=</span>powershell
<span style="color: #008080; font-weight: bold;">set</span> shellcmdflag<span style="color: pink;">=</span><span style="color: #008080; font-style: italic;">-command</span>
syntax on</pre></td></tr></table></div>

<p>Die ersten beiden Zeilen sorgen dafür, dass wenn man den Befehl <code>:shell</code> in Vim eingibt, eine Powershell-Sitzung gestartet wird. Etwas kürzer ist der Befehl <code>:sh</code>. Man kann auch ganze Befehle an die Powershell übergeben und anschließend zu Vim zurückkehren, z.B. mit <code>:!dir | more</code>.</p>
<p>Damit das Syntax-Highlighting auch Powershell-Skripte einfärbt, benötigt man das <a href="http://www.vim.org/scripts/script.php?script_id=1327">Windows PowerShell Syntax Plugin</a> von <a href="http://www.peterprovost.org/">Peter Provost</a>. Der Inhalt der ZIP-Datei muss entweder nach <code>$HOME\vimfiles</code> oder <code>$VIM\vimfiles</code> kopiert werden. Welche Pfade sich hinter den Variablen <code>$HOME</code> und <code>$VIM</code> verbergen, bekommt man heraus, wenn man sie innerhalb von Vim mit dem Befehl <code>:echo</code> abfragt:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #000000;">:</span><span style="color: #804040;">echo</span> <span style="color: #000000;">$</span>VIM
C<span style="color: #000000;">:</span>\Program Files\Vim\vim73</pre></td></tr></table></div>

<p>Also muss man in diesem Fall die Dateien, die sich innerhalb des Archivs <code>vim-ps1.zip</code> befinden, nach <code>C:\Program Files\Vim\vim73\vimfiles</code> entpacken, wenn die Syntaxhervorhebung in Powershell-Skripte für alle Benutzer gelten und in das Home-Verzeichnis, wenn das nur einen User betreffen soll.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2012/12/vimps.png"><img src="http://www.datenteiler.de/wp-content/uploads/2012/12/vimps-300x226.png" alt="" title="vimps" width="300" height="226" class="aligncenter size-medium wp-image-8586" /></a></p>
<p>Damit heißt es jetzt auch unter Windows und in der Powershell &#8220;Happy Vimming&#8221;. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/vim-und-powershell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ein Powershell-Modul konvertiert PDFs zu Text</title>
		<link>http://www.datenteiler.de/ein-powershell-modul-konvertiert-pdfs-zu-text/</link>
		<comments>http://www.datenteiler.de/ein-powershell-modul-konvertiert-pdfs-zu-text/#comments</comments>
		<pubDate>Sun, 02 Dec 2012 22:30:47 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=8460</guid>
		<description><![CDATA[Die Powershell bietet von sich aus leider keine Möglichkeit, den Text aus einer PDF-Datei zu ziehen, um ihn weiterzuverarbeiten. Deshalb habe ich mir selber ein Modul gebastelt, das diese Arbeit übernimmt. Damit die Umwandlung funktioniert, benötigt man allerdings ein externes Tool wie pdftotext.exe, zum Beispiel aus den Poppler-Utils. Nur bieten die Poppler-Entwickler selbst keine ausführbare [...]]]></description>
				<content:encoded><![CDATA[<p>Die Powershell bietet von sich aus leider keine Möglichkeit, den Text aus einer PDF-Datei zu ziehen, um ihn weiterzuverarbeiten. Deshalb habe ich mir selber ein Modul gebastelt, das diese Arbeit übernimmt. Damit die Umwandlung funktioniert, benötigt man allerdings ein externes Tool wie <em>pdftotext.exe</em>, zum Beispiel aus den <a href="http://poppler.freedesktop.org/">Poppler-Utils</a>. Nur bieten die Poppler-Entwickler selbst keine ausführbare Datei für Windows an. Also muss man entweder <a href="http://www.seppemagiels.com/blog/building-poppler-windows-using-mingw">selber den Compiler anwerfen</a>, was den Vorteil hat, dass man eine aktuelle Version erstellen kann, oder <a href="http://www.outsch.org/2010/09/20/poppler-utils-0-15-for-windows/">eine fertige Datei herunterladen</a>, in diesem Fall die Version 0.15 der Poppler-Utils. </p>
<p><span id="more-8460"></span></p>
<p>Die Datei <em>pdftotext.exe</em> wird zusammen mit dem Powershell-Modul <em>ConvertFromPDF.psm1</em>, das die unten stehende Funktion <code>ConvertFrom-Pdf</code> enthält, in das Verzeichnis <em>ConvertFromPDF</em> kopiert. Bis auf die Endung muss der Name der Modul-Datei mit dem des -Verzeichnisses identisch sein.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #0000FF;">Function</span> ConvertFrom<span style="color: pink;">-</span>Pdf <span style="color: #000000;">&#123;</span>
&nbsp;
<span style="color: #008000;">&lt;#  
.SYNOPSIS  
This function converts PDFs to text 
&nbsp;
.DESCRIPTION  
The function has one parameter which is mandatory: 
-pdfs .\path\to\file.pdf 
&nbsp;
The following parameter is optional:
-vebose 
&nbsp;
.EXAMPLE 
ConvertFrom-Pdf -pdfs first-file.pdf
&nbsp;
Convert a PDF file to text.
&nbsp;
.EXAMPLE 
ConvertFrom-Pdf -pdfs first-file.pdf, second-file.pdf
&nbsp;
Convert two or more PDF files to text.
&nbsp;
.EXAMPLE 
ConvertFrom-Pdf -pdfs first-file.pdf -verbose
&nbsp;
Show verbose output.
#&gt;</span> 
&nbsp;
<span style="color: #000000;">&#91;</span>cmdletbinding<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
&nbsp;
<span style="color: #0000FF;">param</span><span style="color: #000000;">&#40;</span>
<span style="color: #000000;">&#91;</span>Parameter<span style="color: #000000;">&#40;</span>Mandatory<span style="color: pink;">=</span><span style="color: #800080;">$true</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #008080;">String</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#93;</span> <span style="color: #800080;">$pdfs</span><span style="color: pink;">,</span>
<span style="color: #000000;">&#91;</span><span style="color: #0000FF;">switch</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$VerboseDetail</span>
<span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #008000;"># Get path to pdftotext.exe</span>
<span style="color: #800080;">$modulepath</span> <span style="color: pink;">=</span> <span style="color: #000000;">&#40;</span>get<span style="color: pink;">-</span>module <span style="color: #008080; font-style: italic;">-list</span> <span style="color: #008080; font-style: italic;">-name</span> ConvertFromPDF<span style="color: #000000;">&#41;</span>.path
<span style="color: #800080;">$convertfrompdfpath</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">Split-Path</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$modulepath</span><span style="color: #000000;">&#41;</span>
<span style="color: #800080;">$pdftotext</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;$convertfrompdfpath\pdftotext.exe&quot;</span>
&nbsp;
<span style="color: #008000;"># Convert PDFs to text</span>
<span style="color: #0000FF;">foreach</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$pdf</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$pdfs</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
   <span style="color: #800080;">$cmd</span><span style="color: pink;">=</span><span style="color: #800000;">&quot;$pdftotext $pdf&quot;</span>
   <span style="color: #800080;">$pdf_file</span><span style="color: pink;">=</span><span style="color: #008080; font-weight: bold;">Split-Path</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$pdf</span><span style="color: #000000;">&#41;</span> <span style="color: #008080; font-style: italic;">-leaf</span> <span style="color: #008080; font-style: italic;">-resolve</span>
   <span style="color: #800080;">$text_file</span><span style="color: pink;">=</span><span style="color: #800080;">$pdf_file</span>.Replace<span style="color: #000000;">&#40;</span> <span style="color: #800000;">'.pdf'</span><span style="color: pink;">,</span> <span style="color: #800000;">'.txt'</span><span style="color: #000000;">&#41;</span>
   <span style="color: #008080; font-weight: bold;">Write-Verbose</span> <span style="color: #800000;">&quot;Convert $pdf_file to $text_file&quot;</span>
   <span style="color: #008080; font-weight: bold;">Invoke-Expression</span> <span style="color: #800080;">$cmd</span> 
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span> <span style="color: #008000;"># End function</span></pre></td></tr></table></div>

<p>Der Ordner muss anschließend in ein Modulverzeichnis der Powershell kopiert werden. Um die Speicherorte für Powershell-Module herauszufinden, kann man folgenden Befehl benutzen:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #800080;">$env</span>:PSModulePath
C:\Users\Benutzer\Documents\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules\</pre></td></tr></table></div>

<p>Wenn man das Modul zu den anderen Modulen in das System-Verzeichnis der Powershell kopiert, kann man es anschließend mit folgendem Aufruf importieren:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;">Import<span style="color: pink;">-</span>Module ConvertFromPDF</pre></td></tr></table></div>

<p>Kopiert man das Modul allerdings in das Benutzer- oder irgendein anderes Verzeichnis, muss man es mit dem vollständigen Pfad aufrufen, zum Beispiel:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;">Import<span style="color: pink;">-</span>Module C:\Pfad\zu\Modul\ConvertFromPDF</pre></td></tr></table></div>

<p>Nachdem man das Modul in der Powershell importiert hat, erfährt man mehr über die Funktion <code>ConvertFrom-PDF</code>, wenn man die Hilfe aufruft:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #008080; font-weight: bold;">Get-Help</span> ConvertFrom<span style="color: pink;">-</span>PDF <span style="color: #008080; font-style: italic;">-Examples</span></pre></td></tr></table></div>

<p>Dabei kann man feststellen, dass man eine ganze Reihe von PDF-Dateien zum Besipiel mit diesem Aufruf in Text-Dateien umwandeln kann:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;">ConvertFrom<span style="color: pink;">-</span>Pdf <span style="color: pink;">-</span>pdfs first<span style="color: #FF0000;">-file</span>.pdf<span style="color: pink;">,</span> second<span style="color: #FF0000;">-file</span>.pdf <span style="color: #008080; font-style: italic;">-verbose</span></pre></td></tr></table></div>

<p>Der Parameter für die PDF-Datei oder -Dateien ist <code>-pdfs</code>, wobei mehrere Dateien durch ein Komma getrennt werden. Wenn man es genauer wissen will, benötigt man zusätzlich noch den Parameter <code>-verbose</code>. Der erste Parameter wird im Skript mit <code>param</code> definiert, für die Verbose-Ausgabe folgt ein Switch, der benötigt allerdings recht am Anfang des Skripts folgende Zeile:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #000000;">&#91;</span>CmdletBinding<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span></pre></td></tr></table></div>

<p>Die Zeile muss als erste Zeile, gleich nach allen einleitenden Kommentaren, oder auch als erste Zeile in eine Funktion eingefügt werden. Das Skript wird danach automatisch um die zwei neuen Parameter <code>-verbose</code> und <code>-debug</code> erweitert. Weiter unten im Skript gibt dann der Befehl <code>Write-Verbose</code> die dazugehörige Information aus.</p>
<p>Das Modul kann man aber auch <a href="http://www.datenteiler.de/wp-content/uploads/2012/12/ConvertFromPDF.zip">hier herunterladen</a> und zum Beispiel in das Modul-Verzeichnis <em>C:\Windows\system32\WindowsPowerShell\v1.0\Modules\</em> entpacken.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/ein-powershell-modul-konvertiert-pdfs-zu-text/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dokan unter Windows 8 installieren</title>
		<link>http://www.datenteiler.de/dokan-unter-windows-8-installieren/</link>
		<comments>http://www.datenteiler.de/dokan-unter-windows-8-installieren/#comments</comments>
		<pubDate>Mon, 26 Nov 2012 20:35:34 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=8436</guid>
		<description><![CDATA[Dokan ist eine Dateisystembibliothek für Windows, die man zum Beispiel für encfs4win benötigt. Das braucht man wiederum, um wichtige Ordner und Dateien zu verschlüsseln, die aus irgendeinen Grund, beispielsweise mit Dropbox, in die Cloud sollen. Auf diese Ordner und Dateien kann man dann mit Hilfe von Boxcryptor unter Android und iPhone zugreifen, was ein klarer [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://dokan-dev.net/en/download/">Dokan</a> ist eine Dateisystembibliothek für Windows, die man zum Beispiel für <a href="http://members.ferrara.linux.it/freddy77/encfs.html">encfs4win</a> benötigt. Das braucht man wiederum, <a href="http://www.datenteiler.de/sicher-in-die-wolke-mit-encfs/">um wichtige Ordner und Dateien zu verschlüsseln</a>, die aus irgendeinen Grund, beispielsweise mit Dropbox, in die Cloud sollen. Auf diese Ordner und Dateien kann man dann mit Hilfe von <a href="https://www.boxcryptor.com/?lang=de">Boxcryptor</a> unter Android und iPhone zugreifen, was ein klarer Vorteil gegenüber anderen Verschlüsselungstools wie Truecrypt oder GnuPG ist.</p>
<p>Auch unter Windows 8 installiert man zuerst <a href="http://dokan-dev.net/en/download/#dokan">die aktuelle Dokan-Bibliothek</a>, um danach die <a href="http://members.ferrara.linux.it/freddy77/encfs.html">Datei encfs.zip</a> nach &#8220;C:\Program Files&#8221; zu entpacken. Doch hier beginnt das Problem, weil Dokan meldet, dass Windows 8 nicht unterstützt wird: &#8220;Your OS is not supported. Dokan library supports Windows 2003, Vista, 2008, 2008R2 and 7 for x64.&#8221; Trotz dieser Warnung funktioniert Dokan aber sehr gut unter Windows 8. Wenn man als Benutzer mit Administrationsrechten angemeldet ist, unter Windows der Normalfall, kann man den Installer im Kompatibilitätsmodus zu Windows 7 starten. Dazu mit der rechten Maustaste auf die EXE-Datei klicken, im Kontextmenü &#8220;Eigenschaften&#8221; auswählen und im Reiter &#8220;Kompatibilität&#8221; einen Haken bei Komtabibilitätsmodus setzen und &#8220;Windows 7&#8243; auswählen. Anschließend funktioniert die Installation von Dokan ohne Probleme.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2012/11/Dokan.png"><img src="http://www.datenteiler.de/wp-content/uploads/2012/11/Dokan-212x300.png" alt="" title="Dokan" width="212" height="300" class="aligncenter size-medium wp-image-8443" /></a></p>
<p>Nachdem die <a href="http://members.ferrara.linux.it/freddy77/encfs.html">Datei encfs.zip</a> nach &#8220;C:\Program Files&#8221; entpackt wurde, öffnet man die ausführbare Datei ENCFSW.EXE. Das Programm, das man zum Entschlüssen der Ordner benötigt, bringt schon eine grafische Oberfläche mit, wie man am Schlüsselsymbol in der Taskleiste erkennt. Soll das Programm automatisch starten, kann man einen Haken bei der Option &#8220;Launch at startup&#8221; unter &#8220;Preferences&#8221; setzen. </p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2012/11/encfs4win.png"><img src="http://www.datenteiler.de/wp-content/uploads/2012/11/encfs4win-300x185.png" alt="" title="encfs4win" width="300" height="185" class="aligncenter size-medium wp-image-8451" /></a></p>
<p>Um einen verschlüsselten Ordner zu öffnen oder anzulegen, klickt man auf &#8220;Open/Create&#8221;. Danach wählt man den verschlüsselten Ordner aus, bzw. legt ihn an. Da Windows anders als Unix-artige Betriebssysteme keine Mount-Punkte kennt, muss man dem zu entschlüsselnden Ordner einen Laufwerksbuchstaben zuweisen. Der entschlüsselte Inhalt des Ordners steht dann unter diesem Laufwerksbuchstaben bereit.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/dokan-unter-windows-8-installieren/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Mit Powershell die Bildschirmauflösung ändern</title>
		<link>http://www.datenteiler.de/mit-powershell-die-bildschirmauflosung-andern/</link>
		<comments>http://www.datenteiler.de/mit-powershell-die-bildschirmauflosung-andern/#comments</comments>
		<pubDate>Thu, 15 Nov 2012 20:59:57 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=8382</guid>
		<description><![CDATA[Zurück zum Problem meiner kleinen Windows 8 Installation, bei dem Windows Apps eine Auflösung von 1024 x 768 Pixel benötigen, mein Netbook aber am besten mit einer Auflösung von 1024 x 600 Pixel funktioniert. Auf dem Startbildschirm sind 1024 x 768 Pixel ganz ok, aber auf dem Desktop funktioniert es nicht, weil er dann sehr [...]]]></description>
				<content:encoded><![CDATA[<p>Zurück zum Problem <a href="http://www.datenteiler.de/meine-kleine-windows-8-installation/">meiner kleinen Windows 8 Installation</a>, bei dem Windows Apps eine Auflösung von 1024 x 768 Pixel benötigen, mein Netbook aber am besten mit einer Auflösung von 1024 x 600 Pixel funktioniert. Auf dem Startbildschirm sind 1024 x 768 Pixel ganz ok, aber auf dem Desktop funktioniert es nicht, weil er dann sehr gestaucht aussieht. </p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2012/11/apps.png"><img src="http://www.datenteiler.de/wp-content/uploads/2012/11/apps-300x175.png" alt="" title="apps" width="300" height="175" class="aligncenter size-medium wp-image-8385" /></a></p>
<p>Da ich die Windows Apps nicht so häufig brauche, wie den Desktop, lasse ich die niedrigere Auflösung eingestellt. Aber immer über die Bildschirmauflösung zu gehen, um die Auflösung für die Windows Apps zu erhöhen, ist ganz schön umständlich. Um das Ganze abzukürzen, benutze ich <a href="http://gallery.technet.microsoft.com/ScriptCenter/2a631d72-206d-4036-a3f2-2e150f297515/">ein Powershell-Skript</a> aus dem <a href="http://blogs.technet.com/b/heyscriptingguy/archive/2010/07/07/hey-scripting-guy-how-can-i-change-my-desktop-monitor-resolution-via-windows-powershell.aspx">Hey, Scripting Guy! Blog</a>, mit dem sich die Bildschirmauflösung leicht verändern lässt. Ich habe es als Modul unter <code>C:\Users\Public\Modules\ScreenResolution\ScreenResolution.psm1</code> gespeichert und auf dem Desktop zwei Verknüpfungen angelegt: Die eine heißt <code>Res768</code> und ändert die Auflösung, wen wundert&#8217;s, auf 1024 x 768 Pixel und hat folgendes Ziel:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="dos" style="font-family:monospace;">powershell.exe -WindowStyle Hidden -command &quot;<span style="color: #33cc33;">&amp;</span> {Import-Module C:\Users\Public\Modules\ScreenResolution; Set-ScreenResolution -width 1024 -height 768}&quot;</pre></td></tr></table></div>

<p>Die andere Verknüpfung <code>Res600</code> macht das Ganze wieder rückgängig:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="dos" style="font-family:monospace;">powershell.exe -WindowStyle Hidden -command &quot;<span style="color: #33cc33;">&amp;</span> {Import-Module C:\Users\Public\Modules\ScreenResolution; Set-ScreenResolution -width 1024 -height 600}&quot;</pre></td></tr></table></div>

<p>Beide Verknüpfungen liegen auf dem Desktop, so dass ich schnell darauf zugreifen kann. Dazu kann man <code>Res768</code> auch noch an den Startbildschirm anheften, um von dort aus die Auflösung zu ändern. </p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2012/11/link.png"><img src="http://www.datenteiler.de/wp-content/uploads/2012/11/link-256x300.png" alt="" title="link" width="256" height="300" class="aligncenter size-medium wp-image-8391" /></a></p>
<p>Dadurch, dass erst die Powershell gestartet werden muss, bevor das Modul geladen und der Befehl ausgeführt wird, ist diese Lösung etwas langsam. Mal sehen, vielleicht kann man den im Skript enthaltenen C#-Code in eine EXE-Datei packen, um die Änderung der Auflösung zu beschleunigen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/mit-powershell-die-bildschirmauflosung-andern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meine kleine Windows 8 Installation</title>
		<link>http://www.datenteiler.de/meine-kleine-windows-8-installation/</link>
		<comments>http://www.datenteiler.de/meine-kleine-windows-8-installation/#comments</comments>
		<pubDate>Wed, 14 Nov 2012 12:46:27 +0000</pubDate>
		<dc:creator>Christian Imhorst</dc:creator>
				<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.datenteiler.de/?p=8342</guid>
		<description><![CDATA[Hilfe, Tipps und Unterstützung, um Windows 8 zu installieren, gibt es im Internet reichlich. Wenn man freiwillig auf Windows 8 umsteigen will, ohne einen neuen Rechner oder ein Tablet zu kaufen, kann man zur Zeit ein schönes Schnäppchen machen, indem man das Upgrade von einer älteren Windows-Version auf Windows 8 Pro für 29,99 Euro nimmt. [...]]]></description>
				<content:encoded><![CDATA[<p>Hilfe, Tipps und Unterstützung, um <a href="http://www.borncity.com/blog/tag/windows-8/">Windows 8 zu installieren</a>, gibt es im Internet reichlich. Wenn man freiwillig auf Windows 8 umsteigen will, ohne einen neuen Rechner oder ein Tablet zu kaufen, kann man zur Zeit ein schönes Schnäppchen machen, indem man das Upgrade von einer älteren Windows-Version auf Windows 8 Pro für 29,99 Euro nimmt. Auf meinem Netbook N145Plus von Samsung existiert neben Xubuntu zum Beispiel ein Windows 7 Starter, das auch extrem abgespeckt noch ziemlich langsam ist. Windows 8 Pro soll da deutlich schneller sein, also habe ich die Installation riskiert und das Geld investiert, um die lahme Starter- durch eine Pro-Edition zu ersetzen.</p>
<p><span id="more-8342"></span></p>
<p>Zuerst benötigt man den <a href="http://windows.microsoft.com/de-DE/windows-8/upgrade-to-windows-8">Upgrade-Assistenten</a>, um ein Windows 8-Upgrade als Download auszuführen. Dazu habe ich mich auf dem Netbook als Administrator unter Windows 7 angemeldet. Außerdem habe ich noch die Auflösung auf 1024 x 768 Pixel geändert, damit der Assistent nix zu meckern hat. Metro Apps funktionieren unter Windows 8 nur ab dieser Auflösung, normalerweise benutzt ein Netbook allerdings eine Auflösung von 1024 x 600 Pixel.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2012/11/Auflösung.png"><img src="http://www.datenteiler.de/wp-content/uploads/2012/11/Auflösung-300x175.png" alt="" title="Auflösung" width="300" height="175" class="aligncenter size-medium wp-image-8345" /></a></p>
<p>Anschließend fragt der Assistent, was man behalten möchte. Hier hat man auch die Chance, &#8220;Nichts&#8221; auszuwählen, was auf eine Neuinstallation hinausläuft, das bei einem Upgrade eigentlich nicht funktionieren sollte. Bei mir führte diese Wahl auch noch zu Problemen bei der Aktivierung von Windows 8, doch dazu später mehr.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2012/11/Nichts-Ausgewählt.png"><img src="http://www.datenteiler.de/wp-content/uploads/2012/11/Nichts-Ausgewählt-300x109.png" alt="" title="Nichts-Ausgewählt" width="300" height="109" class="aligncenter size-medium wp-image-8348" /></a></p>
<p>Warum Microsoft hier eine Optionen bei der Installation anbietet, die bei der Aktivierung in eine Sackgasse führt, bleibt wohl ein Geheimnis. </p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2012/11/Install-Med.png"><img src="http://www.datenteiler.de/wp-content/uploads/2012/11/Install-Med-300x234.png" alt="" title="Install-Med" width="300" height="234" class="aligncenter size-medium wp-image-8350" /></a></p>
<p>Als Installationsmedium habe ich mich für die ISO entschieden, nur um die Dateien nach dem Entpacken auf einen bootfähigen USB-Stick zu beamen. Das Ganze geht vermutlich schneller umgekehrt, indem man den Assistenten einen bootfähigen USB-Stick erstellen lässt, um nach gelungener Installation die Dateien dort wieder herunterzukratzen, aber ich habe Zeit.</p>
<p><a href="http://www.datenteiler.de/wp-content/uploads/2012/11/Install-Med2.png"><img src="http://www.datenteiler.de/wp-content/uploads/2012/11/Install-Med2-300x234.png" alt="" title="Install-Med2" width="300" height="234" class="aligncenter size-medium wp-image-8351" /></a></p>
<p>Also habe ich den USB-Stick angeschlossen, die Windows Shell <em>cmd.exe</em> geöffnet und <code>diskpart</code> eingeben.  Mit <code>list disk</code> kann man die aktuellen Laufwerke anzeigen, wobei man sich die Nummer des USB-Sticks merken muss. Bei mir ist es die Nummer 1, woraufhin ich die folgenden Befehle in dieser Reihenfolge eingegeben habe:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="dos" style="font-family:monospace;">select disk 1
clean
create partition primary
select partition 1
active
format fs=fat32
assign
<span style="color: #00b100; font-weight: bold;">exit</span></pre></td></tr></table></div>

<p>Die Windows.iso, die der Assistent erstellt hat, habe ich gespeichert, mit <a href="http://www.7-zip.de/">7Zip</a> entpackt und dann die Dateien auf den jetzt bootfähigen USB-Stick in Laufwerk F: kopiert:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="dos" style="font-family:monospace;">xcopy C:\Pfad\zur\entpackten\iso\*.* /s /e /f F:\</pre></td></tr></table></div>

<p><a href="http://www.datenteiler.de/wp-content/uploads/2012/11/XCopy2.png"><img src="http://www.datenteiler.de/wp-content/uploads/2012/11/XCopy2-300x151.png" alt="" title="XCopy2" width="300" height="151" class="aligncenter size-medium wp-image-8375" /></a></p>
<p>Nach dem Neustart des Netbooks läuft die Installation von Windows 8 vom USB-Stick, sofern man die Bootreihenfolge im BIOS entsprechend eingestellt hat. Nach Installation und Anmeldung habe ich den Rechner noch einmal komplett neu gestartet, was mich gleich zur Aktivierung von Windows 8 geführt hat. Warum ich hier nochmal den Produkt-Key eingeben muss, den ich ja schon während der Installation eingetippt hatte, ist mir nicht ganz klar. Blöd nur, dass die erneute Eingabe des Keys fehl schlägt: &#8220;Mit dem Produkt Key stimmt etwas nicht&#8221;, bzw. &#8220;<a href="http://windows.microsoft.com/de-DE/windows-8/why-activate-windows">Sie haben den PC auf Windows 8 aktualisiert, obwohl keine frühere Version von Windows installiert war</a> (Fehler 0xC004F061)&#8221; oder so ähnlich. Diese Thematik hat Windows 8 von seinem Vorgänger geerbt. Mit dem <a href="http://www.heise.de/ct/artikel/Der-Upgrade-Trick-849648.html">alten &#8220;Upgrade-Trick&#8221;</a> aus der c&#8217;t funktioniert die sauber Neuinstallation auch unter Windows 8, wie auch <a href="http://stadt-bremerhaven.de/windows-8-upgrade-clean-install-funktioniert/">Caschy</a> oder <a href="http://blog.zimmer-se.de/index.cfm/2012/10/27/Windows-8-Aktivierung-schlgt-fehl-Mit-dem-Produkt-Key-stimmt-etwas-nicht">Senfzeit</a> zeigen.   </p>
<p>Zum Schluss teile ich mit meinem Samsung Netbook noch das Schicksal aller anderen Netbook-Besitzer, wie <a href="http://www.borncity.com/blog/2012/03/17/windows-8-metro-apps-beim-msi-wind-u-100-anzeigen-teil-ii/">Günter Born mit seinem MSI Wind U 100</a>: Metro Apps lassen sich nur mit einer Auflösung von 1024 x 768 Pixel starten, das Netbook liefert nach der Installation aber nur 1024 x 600 Pixel. Damit die Auflösung entsprechend geändert werden kann, muss man in der Registry nach dem Schlüssel <strong>Display1_DownScalingSupported</strong> suchen und bei allen gefundenen Einträgen den DWORD-Wert von 0 auf 1 setzen. Dazu die Windows-Taste drücken, wild <code>regedit.exe</code> eintippen, auf das Ergebnis mit der rechten Maustaste klicken und &#8220;Als Admin ausführen&#8221; auswählen. Im Editor öffnet man mit der Tastenkombination &#8220;Strg + F&#8221; ein Suchfenster. Wenn man den Schlüssel gefunden hat, klickt man mit der linken Maustaste doppelt drauf und ändert den DWORD-Wert auf 1. Mit der Taste &#8220;F3&#8243; sucht man nach den nächsten Eintrag. Insgesamt sollten es zwei sein. Nach dem Neustart tauchen jetzt bei der Bildschirmauflösung eine Reihe weiterer Werte auf, wobei man nach der Änderung auf 1024 x 768 Pixel die Metro Apps starten kann.</p>
<p>Blöd nur, dass der Desktop jetzt ziemlich gestaucht aussieht. Schöner wäre es natürlich, wenn man zwei Modi definieren könnte: 1024 x 768 Pixel für die Apps, 1024 x 600 Pixel für den Desktop. Von diesem Schönheitsfehler einmal abgesehen, bereue ich den Umstieg von Windows 7 Starter auf Windows 8 Pro für den Preis kein bisschen. Windows 8 fühlt sich auf der schmalen Hardware mit 1 GB Arbeitsspeicher und 1,67 GHz-Prozessor wesentlich schneller an, als die Starter-Edition. Abgesehen davon gibt es viele neue Features, die in der Starter gefehlt haben, und die es jetzt zu entdecken gilt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datenteiler.de/meine-kleine-windows-8-installation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
