Unter http://www.vistax64.com/powershell/190352-executing-sql-queries-powershell.html gibt es einige einfache Skripte für den Abruf von Daten aus einer SQL-Server Datenbank.
Mit ‘Powershell’ getaggte Artikel
DB-Abfragen mit Powershell
Sonntag, 23. Mai 2010MD5-Hash für eine Datei bestimmen
Sonntag, 23. Mai 2010Ausgehend von einer komplexeren Funktion, die mir bereitgestellt wurde, hier ein Beispiel für die Berechnung von MD5-Hashes in Powershell:
[System.IO.FileInfo] $file = "c:\hallo.txt" $cryptoServiceProvider = [System.Security.Cryptography.MD5CryptoServiceProvider]; $hashAlgorithm = new-object $cryptoServiceProvider $stream = $file.OpenRead(); $hashByteArray = $hashAlgorithm.ComputeHash($stream); $stream.Close(); return [string]$hashByteArray;
Dateipfade überprüfen mit Powershell
Sonntag, 09. Mai 2010Für eine Liste von Dateien wollte ich wissen, welche der Dateien nicht gefunden werden können. Dank Powershell ist dies einfach zu erledigen.
- Ich importiere die entsprechende CSV-Datei (Hinweis: In der ersten Zeile der zu importierenden Datei steht “file”, über diese Bezeichnung erkennt Powershell die Spalte.
- Für jeden Eintrag in der Liste wird der Pfad überprüft.
- Wenn die der Pfad nicht gefunden wird, wird die entsprechende Pfadangabe an die
notfound.txtDatei gehangen.
$files = Import-Csv t:\dateipfade.txt foreach ($i in $files){ if (-not (Test-Path $i.file)) { $i.file | Out-File "t:\notfound.txt" -append } }
wget für Powershell
Samstag, 10. April 2010Da der Internet Explorer der Meinung ist, PDF-Dateien im eingebetteten Reader anzuzeigen und das entsprechende PDF die Werkzeugleiste versteckt, brauchte ich ein alternatives Kommando, das die Datei direkt herunterlädt. Auf http://huddledmasses.org/wget-for-powershell/ gab es die Lösung:
$client = new-object System.Net.WebClient $client.DownloadFile("<URL>","<Dateipfad, in den gespeichert werden soll>")
Powershell und Powerboots – Teil 1
Montag, 15. Februar 2010Powerboots (http://huddledmasses.org/powerboots) ist ein .Net GUI Framework für Powershell, mit dem man recht einfach WPF Dialoge und Formulare erstellen kann.
Installation
- Download der ZIP-Datei von http://powerboots.codeplex.com/releases/view/28954
- Entpacken des Ordners in das Powershell Modules Verzeichnis, bei mir (Powershell 2 CTP)
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules get-module -list PowerBootssollte jetzt Informationen in einer Liste ausgeben- Import des Powerboots-Moduls über
Import-Module PowerBoots(Powershell gibt hier einen Fehler aus, ist aber wohl ein Fehler der POSH 2 CTP Version). Das Modul muss bei jedem Neustart neu geladen werden, daher empfiehlt sich ein Eintrag in der POSH Profile-Datei. New-BootsWindow { Button "Push Me" }sollte jetzt ein kleines Fenster mit dem Button zeigen
DLLs mit C# und Powershell – III
Freitag, 05. Februar 2010Nachdem das Erstellen der DLL und der Test erfolgreich waren, können wir jetzt die DLL auch aus Powershell heraus aufrufen:
[Reflection.Assembly]::LoadFile("C:\simpledll.dll") [de.uweziegenhagen.TextCompare]::levenshtein("Andrea", "Andria")
Die Ausgabe bringt zuerst ein paar allgemeine Informationen zur geladenen DLL, dann die Ausgabe der Funktion.
GAC Version Location --- ------- -------- False v2.0.50727 C:\Users\Uwe\Desktop\csharp-dll\simpledll\simpledll\bin\Re... 1
DLLs mit C# und Powershell – II
Freitag, 05. Februar 2010Als nächstes schreibe ich eine kleine Konsolenanwendung, mit deren Hilfe ich die DLL testen kann. Als Projekttyp nutze ich daher “Konsolenanwendung”. Im Projektmappenexplorer wird unter Verweisen ein neuer Verweis auf die DLL angelegt, dann folgt die Eingabe des Quellcodes:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using de.uweziegenhagen; namespace Levenshtein_Test { class Program { static void Main(string[] args) { Console.WriteLine(TextCompare.levenshtein("uwe", "andreas")); Console.ReadLine(); } } }
DLLs mit C# und Powershell – I
Freitag, 05. Februar 2010Hier eine kurze Anleitung, wie man mit C# eigene DLLs erstellt und diese von Powershell aus benutzt. Ich nutze die kostenlose Version von Visual Studio, Visual C# Express 2008. Als umzusetzender Algorithmus kommt Levenshtein zum Einsatz, über den ich öfter schon geschrieben habe, die Funktion stammt aus der englischen Wikipedia.
In VS lege ich ein neues Projekt vom Typ Klassenbibliothek an, als Namespace wähle ich “de.uweziegenhagen”. Das Projekt habe ich unter dem Namen “simpledll” abgespeichert, die “Class1″ Datei in TextCompare.cs umbenannt. Hier der Quelltext für die statische Klasse, wichtig ist, dass die Levenshtein Funktion “public static” ist, nicht “private” wie in der Wikiedia.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace de.uweziegenhagen { public static class TextCompare { public static Int32 levenshtein(String a, String b) { // http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#C.23 if (string.IsNullOrEmpty(a)) { if (!string.IsNullOrEmpty(b)) { return b.Length; } return 0; } if (string.IsNullOrEmpty(b)) { if (!string.IsNullOrEmpty(a)) { return a.Length; } return 0; } Int32 cost; Int32[,] d = new int[a.Length + 1, b.Length + 1]; Int32 min1; Int32 min2; Int32 min3; for (Int32 i = 0; i <= d.GetUpperBound(0); i += 1) { d[i, 0] = i; } for (Int32 i = 0; i <= d.GetUpperBound(1); i += 1) { d[0, i] = i; } for (Int32 i = 1; i <= d.GetUpperBound(0); i += 1) { for (Int32 j = 1; j <= d.GetUpperBound(1); j += 1) { cost = Convert.ToInt32(!(a[i - 1] == b[j - 1])); min1 = d[i - 1, j] + 1; min2 = d[i, j - 1] + 1; min3 = d[i - 1, j - 1] + cost; d[i, j] = Math.Min(Math.Min(min1, min2), min3); } } return d[d.GetUpperBound(0), d.GetUpperBound(1)]; } } }
Das Übersetzen der DLL sollte problemlos funktionieren, die fertige DLL sollte im PRojektverzeichnis unter /bin/release liegen.
O2 Rechnungen mit Powershell herunterladen
Sonntag, 31. Januar 2010In der aktuellen c’t wird in einem Artikel beschrieben, wie man mittels Powershell die Rechnungen von O2 abholen kann. Hier der Link zum Skript: https://www.heise.de/ct/projekte/machmit/webautomatisieren/wiki/SkriptUebersicht.
Powershell und MP3 Tags
Montag, 25. Januar 2010Auf http://www.powershell.nu/2009/09/04/scripting-mp3-metadata-through-powershell/ habe ich heute einen interessanten Artikel gefunden, der das Auslesen von MP3-Tags mit Powershell beschreibt.
$TagLib = "C:\taglib\Libraries\taglib-sharp.dll" [System.Reflection.Assembly]::LoadFile($TagLib) $Media = [TagLib.File]::Create("C:/nemo.mp3") $Media $Media.Tag
GAC Version Location
--- ------- --------
False v2.0.50727 C:\taglib\Libraries\taglib-sharp.dll
Tag : TagLib.NonContainer.Tag
Properties : TagLib.Properties
TagTypesOnDisk : Id3v1, Id3v2
TagTypes : Id3v1, Id3v2
Name : C:/nemo.mp3
MimeType : taglib/mp3
Tell : 0
Length : 0
InvariantStartPosition : 644
InvariantEndPosition : 6508416
Mode : Closed
GAC Version Location
--- ------- --------
False v2.0.50727 C:\taglib\Libraries\taglib-sharp.dll
Tag : TagLib.NonContainer.Tag
Properties : TagLib.Properties
TagTypesOnDisk : Id3v1, Id3v2
TagTypes : Id3v1, Id3v2
Name : C:/nemo.mp3
MimeType : taglib/mp3
Tell : 0
Length : 0
InvariantStartPosition : 644
InvariantEndPosition : 6508416
Mode : Closed
StartTag : TagLib.NonContainer.StartTag
EndTag : TagLib.NonContainer.EndTag
TagTypes : Id3v1, Id3v2
Tags : {, }
Title : Nemo
Performers : {Nightwish}
PerformersSort : {}
AlbumArtistsSort : {}
AlbumArtists : {}
Composers : {}
ComposersSort : {}
TitleSort :
AlbumSort :
Album : Once
Comment :
Genres : {Other}
Year : 2004
Track : 0
TrackCount : 0
Disc : 0
DiscCount : 0
Lyrics :
Grouping :
BeatsPerMinute : 0
Conductor :
Copyright :
MusicBrainzArtistId :
MusicBrainzReleaseId :
MusicBrainzReleaseArtistId :
MusicBrainzTrackId :
MusicBrainzDiscId :
MusicIpId :
AmazonId :
MusicBrainzReleaseStatus :
MusicBrainzReleaseType :
MusicBrainzReleaseCountry :
Pictures : {}
IsEmpty : False
Artists : {Nightwish}
FirstArtist : Nightwish
FirstAlbumArtist :
FirstAlbumArtistSort :
FirstPerformer : Nightwish
FirstPerformerSort :
FirstComposerSort :
FirstComposer :
FirstGenre : Other
JoinedArtists : Nightwish
JoinedAlbumArtists :
JoinedPerformers : Nightwish
JoinedPerformersSort :
JoinedComposers :
JoinedGenres : Other