blog.atwork.at

news and know-how about microsoft, technology, cloud and more.

Ganz frisch: useful stuff of MIX08

In Las Vegas fand Anfang März die große Microsoft-Konferenz MIX08 rund um die Themen Webdesign, Webentwicklung und Online Business statt. Das Motto lautete "The Next Web Now". Und weil bei dieser Veranstaltung so viele News, Informationen und Produkte zum Thema "Web" enthalten sind, hier eine kleine Zusammenfassung! Im MIX-Web sind 88 Sessions zum Abrufen bereit, hier geht´s direkt zu den Webcasts (natürlich mit Silverlight Technologie). Diesmal gab es auch für die Teilnehmer eine Fülle an Mitbringsel - aktuelle Software zum Anschauen und Testen. Diese finden Sie auch hier zum Download, unter anderem die Expression-Produkte, IE8-Beta, Silverlight Beta, ASP.NET Silverlight server controls und vieles mehr. Sehr hilfreich finde ich vor allem - als Webentwickler - diese Maschinen: Internet Explorer Application Compatibility VPC Image mit fertigen VPCs mit IE6, IE7 und IE8Beta. Zum Testen ideal! Ein gänzlich neues Thema wurde mit den SQL Server Data Service (SSDS) vorgestellt: SSDS ist eine hochskalierbare, robuste on-demand Datenspeicher-Lösung, die per Webservice konsumiert wird. Ziel sind (Web-)Applikationen, die hochverfügbar sind und kosten-effizient gehostet werden. Mehr dazu finden Sie in Kürze hier im Blog. Viel Spaß beim Durchforsten des MIX-Angebotes! Beitrag von Toni Pohl

Aus Alt mach Neu in SQL Server Reporting Services

Auch wenn mittlerweile SQL Server 2008 in den Startlöchern steht - die Realität sieht zumeist (viel) älter aus. So hatte ich vor kurzem einen Datenbankumstieg, wo von einem alten Datenbankserver auf einen neuen zu migrieren war. Die Datenbank selbst war zwar SQL Server 2005, das war jedoch ein Upgrade von einem SQL Server 2000. Eigentlich kein Problem, doch passten die (beim 2000er SQL Server noch zusätzlich zu installierenden) Reporting Services nicht zur DB-Version 2005 und waren noch RS 2000 SP2. Die Reporting Services (RS) sind übrigens Bestandteil des SQL Servers und bieten Report-Erstellung, Management und eine skalierbare Bereitstellung. Eine Weboberfläche am Reporting Server dient zur Administration, die Bereitstellung kann per URL oder auch per Webservice erfolgen. Nachdem es bei unserer Umstellung ein paar Stolpersteine gab, hier ein paar Tipps für den Umstieg SQL Server 2000 Reporting Services auf 2005. Die RDL-Syntax: Die Übernahme der Reports in die neuen SQL 2005 RS war problemlos, außer dass ich die Erfahrung gemacht habe, dass RS 2005 Syntax-Fehler nicht verzeiht. So kam bei einem Report ein Fehler in einer "Hidden"-Eigenschaft (das wars auch schon mit dem Hinweis, wo der Fehler zu suchen war). Nach Ansicht der Report-Codeansicht mit Taste F7 und manuellen Durchsehen aller Hidden-Ausdrücke war der Schuldige identifiziert: =iif(trim(Fields!SEM_Text1.Value) <> "", Fields!SEM_Text1.Value, "") Nun Hidden erwartet True oder False - in meinem Fall stand hier aber fälschlicherweise ein Stringausdruck. Klar, so kann das nicht funktionieren. Also Zeile(n) ausbessern und ausprobieren: =iif(trim(Fields!SEM_Text1.Value) <> "", False, True) Jetzt funktioniert der Report auch in 2005. Fein! Noch ein Hinweis zum RDL-Format: Mit 2005 wurde das RDL-Format erweitert und ist nicht mehr abwärtskompatibel. Report-Dateien (.rdl) für RS 2005 können aber nach wie vor mit Visual Studio 2003 erstellt und verändert werden. Reports aus VS 2005 werden jedoch im Format RS 2005 gespeichert. Diese Reports können dann nicht mehr mit VS 2003 bearbeitet werden. RS versteht aber beide Formate. Nach Lösen dieses Problems kam dann eine weitere Hürde. Automatisiertes Erstellen von Reports per Script: In unserem Szenario haben wir einfache Scripts mit dem RS.exe Tool verwendet, um Reports zu bestimmten Zeiten automatisch als PDF-File zu erstellen. Eigentlich eine sehr praktische Sache. Dummerweise klappten die Scripts mit RS 2005 nicht mehr... Der Aufruf von rs.exe per Scheduled Tasks erfolgt so: C:\>rs -i D:\Tasks\testrs.rss -s http://db1/ReportServer$atwork test.rss ist ein VB Script, welches vom .NET VB-Compiler verarbeitet wird: ' File: testrs.rss by atworkDim format as string = "PDF"Dim fileName as String = "D:\Tasks\myreport.pdf"Dim reportPath as String = "/mydir/myreport"Public Sub Main()    ' Prepare Render arguments    Dim historyID as string = Nothing    Dim deviceInfo as string = Nothing    Dim showHide as string = Nothing    Dim results() as Byte    Dim encoding as string    Dim mimeType as string = "pdf"    Dim warnings() AS Warning = Nothing    Dim reportHistoryParameters() As ParameterValue = Nothing    Dim streamIDs() as string = Nothing    rs.Credentials = System.Net.CredentialCache.DefaultCredentials    ' Report with Parameters     Dim parameters(0) As ParameterValue    parameters(0) = New ParameterValue()    parameters(0).Name = "id"    parameters(0).Value = "1234"    results = rs.Render(reportPath, format, Nothing, Nothing, parameters, Nothing, Nothing, encoding, mimeType, reportHistoryParameters, warnings, streamIDs)    ' Open a file stream and write out the report     Dim stream As FileStream = File.OpenWrite(fileName)    stream.Write(results, 0, results.Length)    stream.Close()End Sub Der RS-Aufruf erzeugte den Fehler: Microsoft (R) Visual Basic Compiler version 8.0.50727.832 for Microsoft (R) .NET Framework version 2.0.50727.832 Copyright (c) Microsoft Corporation.  All rights reserved.C:\Documents and Settings\atwork\Local Settings\Temp\1\zv3y0cit.1.vb(60) : errorBC30456: 'Render' is not a member of 'Microsoft.SqlServer.ReportingServices2005.ReportingService2005'.    results = rs.Render(reportPath, format, Nothing, Nothing, parameters, Nothing, Nothing, encoding, mimeType, reportHistoryParameters, warnings, streamIDs)              ~~~~~~~~~ Ok, also die Render-Methode funktioniert angeblich nicht mehr. Also nach der Ursache forschen. Hier hatte ich netterweise Hilfe von Markus Oswald, unserem Microsoft PTC (Partner Technical Consultant), der mir auch den entscheidenden schnellen Workaround lieferte: RS 2005 läuft gegen den neuen 2005er SOAP Endpoint. Zum Glück wird der "alte" RS 2000 Endpoint des Webservices noch weiter unterstützt. Dazu ist nur bei Aufruf des RS-Tools der Schalter "-e mgmt2000" anzuhängen, um den alten Endpoint aufzurufen. Simple as that! C:\>rs -i D:\Tasks\testrs.rss -s http://db1/ReportServer$atwork -e mgmt2000 So klappt der Aufruf des neuen RS-Tools (und der Kunde freut sich darüber, dass es eine schnelle, einfache Lösung gibt und die automatisierten Dokumente wieder verfügbar sind)! Auch wenn das nur einer (von vielen) Lösungswegen ist (kurz dachte ich darüber nach, ein eigenes kleines .net Tool für die Konsumation des RS-Services zu schreiben...), zählte im aktuellen Fall die rasche Lösung und die gewohnte Funktionalität. Es führen viele Wege zu Reporting Services 2005! Beitrag von Toni Pohl

Windows Server 2008 Developer Training Kit (Beta 3)

Das Windows Server 2008 Developer Training Kit enthält eine Reihe von Hands-on-Labs und Präsentationen der Neuigkeiten im Windows Server 2008 (IIS7, Management, WCF, WF, Windows Cardspace, Windows PowerShell, Virtualisierung und das Transaction File System). Dieses Kit soll Entwicklern zeigen wie man Applikationen baut, die auf Windows Server 2008 Technologie aufbauen. Das Kit beinhaltet sieben Hands-on-labs, die auf der DinnerNow Beispielapplikation aufbauen. Beitrag von Martina Grom

Entwickler / Welt

Das deutsche msdn-Portal wurde aufgeräumt: Nach dem Motto "Schneller finden, was Sie brauchen" präsentiert sich die deutschsprachige msdn-community mit einer übersichtlichen Such- und Startseite "Entwickler / Welt". Hier finden Sie aktuelle, interessante Artikel, Services und Hotline bis hin zur msdn Bibliothek - alles in Deutsch und recht übersichtlich gruppiert. Viel Spaß beim Entdecken der Entwickler / Welt! Beitrag von Toni Pohl

Entwicklungshilfe f&uuml;r DACH

Endlich gibt es auch für die kostenlose SQL Server 2005 Express Edition eine deutsche Dokumentation (DACH steht übrigens für Deutschland, Österreich und die Schweiz), und zwar in der TechNet Library: Onlinedokumentation für Microsoft SQL Server 2005 Express Edition Wer glaubt, es handelt sich dabei um eine simple übersetzte Site, der irrt. Die Doku ist gut gemacht und befasst sich mit relevanten Themen wie dem Verteilen von SQL Server Express und Replikation. Wenns dann doch tiefer gehen soll, dann ist allerdings wieder der Klick in die englische msdn, ins SQL-Server msdn-Forum und ins SQL Server Express msdn-Forum hilfreich. Beitrag von Toni Pohl

Wieviele Zeilen Code hat eigentlich...

...ein aktuelles Produkt von Microsoft? (Es handelt sich hier um managed code, also eine .NET Sprache.) Visual Studio 2005: 7.5 million lines SQL Server 2005: 3 million lines BizTalk Server: 2 million lines Visual Studio Team System: 1.7 million lines Windows Presentation Foundation: 900K lines Windows Sharepoint Services: 750K lines Expression Interactive Designer: 250K lines Sharepoint Portal Server: 200K lines Content Management Server: 100K lines Exchange 12 is 80% managed code. Quelle: Aaron Saikovski's SharePoint Blog

Visual Studio 2008 ist fertig

Seit gestern ist die RTM-Version (released to manufacturing) von Microsoft Visual Studio 2008 (Codename Orcas) fertig! Die Visual Studio Pakete entsprechen jenen von VS2005, also von der kostenlosen Express-Edition bis hin zur Visual Studio Team System 2008 Team Suite Es wurden mehr als 250 Features hinzugefügt, mit VS2008 kommt das Microsoft .net Framework 3.5 mit. Neu ist u.a., dass mit Multitargeting VS2008-Projekte für die .net Framework-Versionen 2.0, 3.0 und 3.5 angelegt werden können (ohne VS2005). Im Blog von Daniel Moth gibts eine Liste der Top 10 Themen über VS2008 und .net Framework. 3.5 VS2008 ist bereits für MSDN-Abonnenten auf der Liste der Top-Downloads verfügbar, hier gehts mit Klick aufs Logo zur Ankündigung und zu weiteren Links: Wichtiger Hinweis zum Download: Der Download ist nur auf der MSDN Subscriptions Home Page verfügbar (das Visual Studio 2008 Readme im Produkte-Baum weist auch darauf hin). Falls noch nicht aktualisiert, benötigen Sie den aktuellen msdn-Download-Manager und müssen Popup-Blocker deaktiviert haben. Mit dem offiziellen Launch am 27. Februar 2008 wird dann die Packerl-Version verfügbar sein, MSDN-Abonnenten sind hier klar im Vorteil. ;-) Beitrag von Toni Pohl

Der neue Windows Webserver - IIS7 News

Microsoft´s Webserver Internet Information Server geht in eine neue Runde: mittlerweile ist die Version 7 als "major upgrade of IIS" in Windows Vista und in Windows Server 2008 verfügbar: IIS7 Das Ziel des IIS-Teams war einfach: den besten Webserver zu schaffen, den Microsoft je hervorgebracht hat. Webserver sind heutzutage ja mehr als einfache Maschinen, die Webseiten liefern und Logfiles schreiben, sondern Applikations-Server mit Security, Services, Lifecycle-Mechanismen, Automatismen, Balancing und weiteren Fähigkeiten. Eine Liste der neuen Funktionen des IIS ist auch unter Overview of Available Features in IIS 7.0 zu finden:IIS7 ist inklusive der Version Windows Vista Home Premium Edition aufwärts Bestandteil des Betriebssystems und natürlich in allen Windows Server 2008-Versionen integriert. FTP ist beispielsweise ab Windows Vista Ultimate, Business und Enterprise Editions verfügbar. Hier nun einige Highlights in einer kurzen Zusammenfassung: Alle Anfragen an den Server (requests) verstehen nun HttpModules und HttpHandlers . Damit werden Themen wie authentication, authorization, logging, url-rewriting, auditing usw. und .NET sehr einfach verwendbar. Die ASP.NET configuration ist nun in IIS integriert. IIS verwendet nun dasselbe web.config Modell wie ASP.NET Applikationen. Damit können default pages, IIS security, logging einfach in der web.config eingestellt und diese dann per FTP auf den Webserver kopiert werden! Sehr praktisch, um eine ganze Webapplikation weiterzugeben oder für Hosting-Szenarien... Es gibt ein integriertes Admin UI-Werkzeug, mit welchem Membership, Roles und Provider administriert werden können. Es gibt eine klare Trennung zwischen den einzelnen Kategorien und Einstellungen. Besseres Error-Handling durch "Failed Request Event Buffering". Damit können dem Benutzer genauere Informationen mitgeteilt werden. Zusätzlich gibts noch Anweisungen, wie der Fehler möglicherweise behoben werden kann:   Neue API und command-line-tools: Webs anlegen, ändern, Stati anzeigen usw. Damit ist es beispielsweise rasch möglich, alle aktiven worker-Processes anzuzeigen und wie lange sie bereits laufen. Mit Scripts sind diese "alltäglichen Arbeiten" dann leicht abrufbar und automatisierbar. Mehr Infos zu IIS7 gibt u.a. in Scott Guthrie´s blog und im IIS DownloadCENTER. Hier gibt´s Tools, Beispiele und Scripts für IIS6 und IIS7. Ein eigenes Video The .NET SHOW: Robert Hess interviews Bill Staples and Scott Guthrie about IIS7 zeigt eine Diskussion und einige der neuen Features des IIS7. Eine neue IIS-Ära beginnt! Beitrag von Toni Pohl

Office Open XML Format + Gratis-Buch Open XML Explained e-book

Die neue Microsoft-Office 2007 Familie verwendet Open XML File-Formate für Word, Excel und PowerPoint - benannt als Office Open XML Format. Diese sind ab 2007 als Standard-Format voreingestellt (können aber jeweils in den Optionen geändert werden) und heißen nun .docx, .xlsx, .pptx. Wenn in den Dokumenten Makros vorhanden sind, wird das finale "x" durch ein "m" ersetzt, also beispielsweise .docm, .xlsm, pptm. Die Vorlagen heißen nun ebenfalls .dotx, etc. Die Vorteile des neuen Dateiformats sind weniger Platzverbrauch (durch ZIP-Technologie), Interoperabilität und einfache Bearbeitungsmöglichkeiten. Jeder, der mal versucht hat eine binäre Word-Datei .doc ohne Word zu bearbeiten oder sich mit Word Automation befasst hat, weiß, dass dies nun eine wesentliche Vereinfachung im Umgang mit Informationen darstellt, XML sei Dank. Die neuen Dateiformate sind strikt getrennte XML-Dateien, die in einem ZIP gepackt sind. Das Microsoft-NET-Framework 3.0 bietet Bibliotheken und Funktionen zum Bearbeiten dieser Dateien. Es gibt bereits eine Reihe von Informationen zum neuen Office Open XML Format: Office Open XML Formats Resource Center - Microsofts XML Office Developer Portal OpenXML Developer Web - Web mit Spezialisierung auf Open XML ...und dort ein neues Buch des niederländischen XML-Experten Wouter Van Vugt, das kostenlos heruntergeladen werden kann: Open XML Explained e-book Mit dem neuen Dateiformat sind ganz tolle Funktionen umsetzbar. Zum Beispiel automatisches Generieren von Rechnungen als Word-Dokument aus einer Applikation heraus, XML-Bausteine oder Grafiken in bestehende Dokumente einfügen oder löschen und vieles mehr. Eine schier riesige Menge an Möglichkeiten im Umgang mit Office-Dokumenten! Beitrag von Toni Pohl

Code selbst signieren - Teil 2 (Das Zertifikat)

In Teil Eins wurde ein Sidebar Gadget als Vorbereitung für das Signieren vom simplen ZIP-Format in eine CAB-Datei gepackt. Teil Zwei beschreibt nun, wie Sie (beliebigen) Programmcode selbst mit einem Zertifikat versehen können. Nun, haben Sie ein eigenes digitales Zertifikat? Wenn ja: fein. Wenn nein: auch gut. Dann erstellen wir uns einfach ein eigenes Zertifikat! Variante 1: Selbsterstelltes Zertifikat erzeugen und verwenden   Wir benötigen das Tool makercert. Das Tools ist Bestandteil von Microsoft Visual Studio 2005 Platform SDK und im Verzeichnis C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin zu finden. Makecert erstellt ein X.509-Zertifikat mit öffentlichem und privatem Schlüssel - allerdings nur zu Testzwecken. Innerhalb Ihrer Firma wäre das aber wahrscheinlich schon ausreichend. Wenn Sie kein Visual Studio 2005 installiert haben, können Sie alternativ das Microsoft® .NET Framework Software Development Kit (SDK) version 1.1 herunterladen und das Tool von hier verwenden (Hinweis: im Internet Explorer Administration Kit Download sind diese Tools _nicht_ mehr vorhanden). cd C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin makecert -sv "C:\Projekte\VistaGadgets\Deploy\pwdgen.pvk" -n "CN=www.atwork.at" C:\Projekte\VistaGadgets\Deploy\pwdgen.cer Passen Sie Pfad und Dateiname sowie den common name an. Damit werden der öffentliche Schlüssel .cer und der private Schlüssel .pvk erzeugt. Diese werden später benötigt. Variante 2: Eigenes öffentliches Zertifikat verwenden Wenn Sie - so wie ich - ein digitales Zertfikat besitzen,  bereiten Sie Ihre Hardware vor (in meinem Fall ein persönliches Zertifikat von a-trust: USB-Kartenleser anschließen, Chipkarte einlegen, a.sign-Client _nicht_ öffnen weil sonst das Kartensystem in Verbindung mit dem folgenden, gleichzeitigen Zugriff verwirrt ist... etc). Weiter mit dem Signieren... Benötigt wird signtool.exe (welches ab 2003 die Vorgängerversion signcode.exe ersetzt), ebenfalls aus dem Microsoft Visual Studio 2005 Platform SDK. cd C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin signtool signwizard Nach Willkommen-Dialog und Auswahl des zu signierenden Programmfiles (in unserem Beispiel: C:\Projekte\VistaGadgets\Deploy\pwdgen.gadget = die erstellte CAB-Datei). Wählen Sie Benutzerdefiniert. Wählen Sie bei eigenem Zertifikat "Aus Speicher wählen" - soferne Sie ihr Zertifikat bereits einmal zum Zertifikatspeicher hinzugefügt haben - was empfehlenswert ist :-) Wenn Sie zuvor mit makecert ein eigenes (Test-)Zertifikat erstellt haben, verwenden Sie "Aus Datei wählen" und geben in den folgenden Schritten die Dateien .cer und .pvk an! Wählen Sie dann "Priv. Schlüssel auf Datenträger". Wählen Sie das Zertifikat. Nun weiter. Bestätigen Sie mit Weiter. Auswahl der Verschlüsselung - wahlweise. Und weiter. Eingabe der eigenen Informationen.   Wenn gewünscht, einen Timestamp zum Zeitpunkt der Signierung hinzufügen, z.B.: http://timestamp.verisign.com/scripts/timstamp.dll Und Fertigstellen. Das war das SignTool. Wenn Sie das Zertifikat auf einen Kartenleser haben, folgt nun die Eingabe der PIN. Und wenn alles ok gegangen ist die Erfolgsmeldung. Das wars! Die signierte Datei pwdgen.gadget sollte nun um ein paar KB größer als zuvor sein. Kontrollieren Sie die Datei-Eigenschaften - hier findet sich nun eine neue Registerkarte "Digitale Signatur". Schaut soweit gut aus. Nun die Kontrolle: Starten der Anwendung - in unserem Fall mit Doppelklick auf pwdgen.gadget: Die zu installierende Software besitzt nun einen Herausgeber und einen Vertrauensgrad - in meinem Fall leider "nur" gelb, da a-trust anscheinend standardmäßig leider nicht von Root weg vertraut wird. Grün wirds, wenn der ganzen Vertrauenskette vertraut wird. Damit ist sichergestellt, dass die Anwendung vom angegebenen Hersteller stammt und unverändert ist. Anwender erhalten somit Sicherheit über die zu installierende Software - zum Beispiel, dass sie von der eigenen IT ausgerollt und geprüft wurde. Es gibt natürlich weitere Methoden, Software selbst zu signieren. Mit SignTool und dem eingebauten Wizard ist dies allerdings recht einfach und zweckmäßig. ...Nie wieder Software von unbekannten Herausgebern installieren! :-) Beitrag von Toni Pohl

Code selbst signieren - Teil 1 (Beispiel: Gadgets verpacken)

Programm-Code kann selbst mit einem Zertifikat versehen werden um den Herausgeber zu verifizieren. Im ersten Teil dieses Beitrags erfahren Sie anhand eines Sidebar Gadgets, wie dieses vorbereitet werden kann und Sie erfahren Wissenswertes über die Gadget-Technologie. Viele von uns verwenden sie bereits täglich und wollen sie nicht mehr missen: die Windows Vista Sidebar Gadgets. Nützliche kleine Tools, um rasch Informationen in den verschiedensten Bereichen zu erhalten, sei es den Wetterbericht, Aktienkurse, die Rechnerauslastung, Outlook-Infos oder RSS-Feeds. Sidebare Gadgets können relativ einfach erstellt werden und sind in Wahrheit nichts anderes als gezippte Dateien mit der Endung .gadget. (Probieren Sie es aus: Benennen Sie eine heruntergeladene Datei von .gadget in .zip um und entpacken Sie das Zip - voila.)Beim Ausführen einer *.gadget-Datei wird diese in das eigene Application Directory entpackt: C:\Users\<username>\AppData\Local\Microsoft\Windows Sidebar\Gadgets\<gadgetname> Eine Manifest-Datei gadget.xml beschreibt das Gadget, die Funktionalität besteht im Wesentlichen meist aus HTML-Seiten, Javascript und einigen Images. Soweit so gut. Die meisten Gadgets besitzen allerdings keinen Hinweis über den Herausgeber der Software - smybolisiert mit dem roten Schild. Ist ein zu installierendes Gadget wirklich vertrauenswürdig? Wer hat es programmiert und wie können wir sicherstellen, dass es sich um nicht um schädlichen Code handelt? Nun, zu schädlichem Code muss gesagt werden, dass Gadgets in einem eigenen geschützten Bereich laufen und nur zu bestimmten Teilen des Rechners Zugriff erhalten - hier besteht im Regelfall keine Sorge, dass ein Gadget wirklich "Böses" ausführen kann - dennoch sollten Entwickler einige Richtlinien beachten. Wir gehen davon aus, dass Sie den Code, welchen Sie verteilen wollen, sicher ist. :-) Aber wie kann nun die Installationsquelle "sicher" gemacht werden, damit die Anwender auf die Identität des Herausgebers vertrauen können? Wenn Sie Entwickler eines Gadgets oder IT-Pro mit dem Ziel einer sicheren Verteilung sind, benötigen Sie ein Zertifikat. Keine Sorge, wenn Sie kein "offizielles" Zertifikat besitzen, das können Sie sich auch einfach selbst erstellen. Gadgets werden im Regelfall als einfache Zip-Dateien geliefert. Schritt eins ist, statt eines Zip-Files ein .CAB-File (=Microsoft Cabinet File, ein gepacktes Archiv zur Software-Verteilung) zu erstellen. Warum? Weil .CAB-Dateien signiert werden können! Dazu benötigen wir das Microsoft Cabinet Software Development Kit. Ein Hinweis, worüber auch ich anfangs gestolpert bin: CAB-Dateien können nicht mit Visual Studio erzeugt werden, weil Visual Studio in CAB-Projekten keine Verzeichnisstruktur speichern kann - diese wird für Gadgets aber benötigt. Daher empfiehlt sich der Einsatz des Microsoft Cabinet SDK! Laden Sie Cabsdk.exe herunter und entpacken diese Datei in ein temporäres Verzeichnis. Die extrahierten Dateien werden in einen allgemeinen Folder kopiert, damit die Tools im PATH gefunden werden können (wenn Sie Visual Studio 2005 installiert haben, empfiehlt sich das Verzeichnis C:\Program Files\Microsoft Visual Studio 8\VC\bin). Nun das Visual Studio 2005 Command Prompt starten und in das Verzeichnis des Gadgets navigieren. Nun wird das Gadget in eine neue .CAB-Datei gepackt: cabarc -p -r N pwdgen.gadget * Ersetzen Sie "pwdgen.gadget" durch den gewünschten Gadget-Namen.-p behält die Verzeichnis-Struktur, -r steht für rekursiv und N für ein neues Archiv. Als Ergebnis erhalten Sie eine neue Datei pwdgen.gadget. Es handelt sich hierbei um eine gepackte Datei vom Typ CAB, welche signiert werden kann - aber nicht muss. Das Gadget kann nun (genauso wie auch .gadgets vom Typ Zip) verteilt werden. Damit wäre der erste Schritt - das Packen des Gadgets - erfüllt. In Teil Zwei sehen wir uns an, wie wir das CAB-Gadget (oder beliebigen anderen Code) mit einem eigenen Zertifikat versehen können! Beitrag von Toni Pohl

HowTo Script in PowerShell

Langsam wird die neue PowerShell immer populärer. Im Windows Server 2008 ist die PowerShell bereits in der Evaluation Version inkludiert. Für alle anderen Windows Betriebssysteme muss die PowerShell 1.0 heruntergeladen und installiert werden (Voraussetzung ist nur das Vorhandensein des .NET Framework 2.0). Seit Ende Jänner ist die finale Version verfügbar, nun gibt es seit dem 31. Juli für die Benutzer der MUI Versionen von Windows XP und Windows Server 2003 eine PowerShell Version für x86, x64 und Server IA64 hier zu laden. (Hinweis: Die MUI Language Packs laufen nur unter den MUI Versionen von Windows. Zuerst muss die englische Version der PowerShell 1.0 installiert werden und danach das Language Pack for Windows PowerShell 1.0.) Die PowerShell arbeitet vollständig objektorientiert. Wie bei anderen Shells gibt es eine Pipeline, in der Ergebnisse von Befehlen an andere Kommandos weitergegeben und weiterverarbeitet werden können. Für alle jene, die sich die PowerShell noch nicht angesehen haben und einmal selbst drauflosprobieren wollen hier eine Quick-Start-Anleitung für das schnelle Erfolgserlebnis. Nach dem Download erfolgt die Installation zügig: Der Aufruf der PowerShell erfolgt einfach über den Pearl-Button und Aufruf der PowerShell (C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe): Und schon geht´s los mit einfachen Kommandos: get-process Die PowerShell besitzt vielleicht den Charme der Eingabeaufforderung, bietet unter der Haube aber ein völlig neues Konzept der Administration von Windows-Rechnern und eine neue, zusätzliche Plattform der Automation. Beim Aufruf von Scripts lauert ein Stolperstein: Das gewohnte Ausführen von Scripts mit der Erweiterung .ps1 öffnet bei Ausführung das Script im Notepad und startet nicht (wie vielleicht von Windows Scripting Host gewohnt) das Script! Als Abhilfe hier nun die Schnellanleitung zum Handling und Testen eines einfachen Scripts in der PowerShell: Zuerst wird (außerhalb der PowerShell) ein neues Textfile mit Notepad mit einer Zeile (zur Anzeige der Betriebssystem-Version mit gwmi win32_operatingsystem) erstellt: Das File wird in C:\Script\test1.ps1 gespeichert. Nun, wie wechselt man (in der PowerShell) das Verzeichnis? cd C:\Scriptdir Microsoft hat übrigens auch Altbewährtes - Flashback! ;-) - aus einer anderen Welt übernommen: pwd, chdir, ls, ... Logisch erscheint, nun einfach das Script test1.ps1 aufzurufen... Das klappt aber so noch nicht. Warum? Die PowerShell verwendet eine "excution policy", welche verhindert, dass nicht signierte Scripts aufgerufen werden (versuchen Sie mal Get-ExecutionPolicy um anzusehen welche Policy eingestellt ist oder Get-Help About_Signing). Das bedeutet, wir stellen mal die Policy auf "RemoteSigned" ein: Set-ExecutionPolicy RemoteSigned Neuerlicher Aufruf von test1.ps1... es klappt noch immer nicht. Durch das Ändern der Policy ist es möglich, Scripts aufzurufen. Allerdings - obwohl wir uns im richtigen Verzeichnis befinden - behandelt die PowerShell Pfade anders als gewohnt. Das bedeutet, es muss immer der Pfad zum Script mit angegeben werden: C:\Script\test1.ps1 (oder kürzer mit ".\":) .\test1.ps1 Nun funktioniert der Aufruf! Wenn C:\Script im PATH vorhanden ist, kann die Pfadangabe entfallen. Um den aktuellen PATH auszugeben, verwenden Sie beispielsweise $env:path und zerlegen diesen mit Split(";") nach dem Trennzeichen ";" in einzelne Elemente:$a = $env:path; $a.Split(";") Hinweis: $-Zeichen definieren übrigens Variablen. D.h. $a wird der Environment-Variable zugewiesen und gibt im zweiten Teil die Variable aus. Nachdem es sich um .net Objekte handelt, sind deren Eigenschaften und Methoden (wie hier .Split verwendbar). Dies ist auch die Stärke der PowerShell, dass fast alle .net-Objekte verwendbar und "pipe-able" (weiterverwendbar) sind. Um dem PATH eigene Verzeichnisse hinzuzufügen verwenden Sie:$env:path = $env:path + ";c:\scripts" Achja noch ein Tipp: Bei Script-Aufrufen in Pfaden mit Leerzeichen muss der Pfad - wie gewohnt - in "C:\Mein Script\test1.ps1" eingefasst werden UND dieser "String" mit dem & - Zeichen als Call-Operator aufgerufen werden: & "C:\Mein Script\test1.ps1" Und wie kann man nun ein PowerShell-Script außerhalb der PowerShell aufrufen? Die Lösung ist einfach: Aufrufen der PowerShell mit dem Script (und der optionalen Anweisung -noexit, damit die PowerShell geöffnet bleibt): powershell.exe -noexit c:\script\test1.ps1 Das wars! Mit diesem Handwerkszeug steht die Basis zum Experimentieren mit PowerShell Scripts bereit und die Fülle an bereits verfügbaren Scripts kann getestet und angepasst werden. Das Windows PowerShell Owner's Manual liefert die ersten Informationen zur Verwendung der PowerShell, das Windows PowerShell 1.0 Documentation Pack eine Getting Started-Dokumentation. Zum Einstieg empfehle ich u.a. die Links Scripting with Windows PowerShell im Microsoft Script Center und das Blog des PowerShell Teams sowie den Download des Windows PowerShell Graphical Help File (PowerShell.chm). Es gibt auch bereits eine deutschsprachige community mit einem Angebot an News, Informationen, Blogs und Tutorials. In diesem Sinne wünsche ich viel Spaß beim Entdecken der Fähigkeiten der PowerShell und beim Scripten! Beitrag von Toni Pohl