Posts tagged ‘Powershell’

Reguläre Ausdrücke mit Powershell II – am Anfang und Ende eines Strings suchen

Füllen wir mal ein Feld mit Ortsnamen:

$orte = "Berlin", "Bergheim", "Hameln", "Hamburg", `
"Köln", "Schöneberg"
$pattern = "berg"
 
# Der match findet Bergheim und Schöneberg
$orte -match $pattern
$matches
 
# Dieser match findet nur Bergheim, da wir per 
# ^ festlegen, dass das "Berg" am 
# Anfang stehen muss
$pattern = "^berg"
$orte -match $pattern
$matches
 
# Dieser match findet nur Schöneberg, da wir 
# per $ festlegen, dass das "Berg" am Ende 
# stehen muss
$pattern = "berg$"
$orte -match $pattern
$matches
 
# Dieser match findet nur Hamburg und
# Schöneberg, da wir per (burg|berg)$
# alle Städte finden, die auf "burg" ODER
# "berg" enden
$pattern = "(berg|burg)$"
$orte -match $pattern
$matches

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Reguläre Ausdrücke mit Powershell I

Reguläre Ausdrücke bilden ein sehr mächtiges Werkzeug für das Suchen und Ersetzen von Mustern in Zeichenketten. Powershell bietet mit dem -match Modifier ein entsprechendes Werkzeug, um reguläre Ausdrücke in der Powershell zu nutzen:

#Definition einiger Strings
$string = "Hallo Welt"
$pattern = "hallo"
# im $matches Array speichert Powershell die gefundenen Textstücke
# hier setzen 
$matches = ""
 
$string -match $pattern
$matches
 
# -cmatch achtet auf Groß- und Kleinschreibung, findet also 'hallo' nicht
$string -cmatch $pattern
 
# -imatch ignoriert Groß- und Kleinschreibung
$string -cmatch $pattern

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Messagebox mit Powershell

Die folgenden Zeilen, gefunden auf http://www.msexchangefaq.de/code/powershell.htm, zaubern eine Messagebox auf den Bildschirm:

$wshshell = new-object -comobject wscript.shell
$Answer = $wshshell.popup("Löschen bestätigen!",0,"Wollen Sie wirklich löschen?",4)
Write-Host $Answer

Auf der Seite gibt es noch eine Reihe interessanter Informationen zur Powershell.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

WPF mit Powershell

WPF steht für „Windows Presentation Foundation“, ein Grafik-Framework von Microsoft.

Auf der folgenden Seite gibt es eine Reihe von Tutorials zu dem Thema: http://blogs.technet.com/robcost/archive/2008/05/28/powershell-wpf-cool.aspx.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Mit Powershell die Sprachausgabebibliothek ansteuern

Über COM lässt sich auch die Windows-eigene Spachbibliothek ansteuern:

$s = New-Object -com "SAPI.spvoice"
$s.speak("Hallo Powershell")

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Powershell User Interface anpassen

Hintergrund- und Vordergrundfarbe und andere Eigenschaften der Powershell lassen sich auch leicht anpassen:

$a = (Get-Host).UI.RawUI
$a.BackgroundColor = "black"
$a.ForegroundColor = "yellow"

Sollen die Änderungen dauerhaft gespeichert werden, kann man sie in der Profil-Datei eintragen, deren Ort man über die Variable $profile ermitteln kann.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Mit Powershell Excel fernsteuern

Was mit Word geht, geht auch mit Excel. Hier ein Beispiel, das ich im Netz (http://www.vistax64.com/powershell/173327-make-excel-chart-powershell.html) gefunden habe und etwas angepasst habe. Schade, dass die Sprachausgabe nur englisch ist:

# http://www.vistax64.com/powershell/173327-make-excel-chart-powershell.html
$excel = New-object -comobject Excel.Application
$excel.Visible = $true
$excel.DisplayAlerts = $false
$workbook = $excel.Workbooks.Add()
$sheet = $workbook.Worksheets.Item(1)
$sheet.Name = 'Hallo Welt'
 
foreach ($i in 1..25){
    $sheet.cells.item($i,1) = $i
    $sheet.cells.item($i,2) = $i*2
}
 
# Bar Chart
# Datenherkunft
$range = $sheet.range('a1:a25')
 
# Chart-Variable anlegen
$chart = $sheet.shapes.addChart().chart
# Typ zuweisen (Bar Chart)
$chart.chartType = 58
# Daten zuweisen
$chart.setSourceData($range)
1..48 | % {$chart.chartStyle = $_; $excel.speech.speak("Style $_"); sleep 2}

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Word-Dokumente mit Powershell generieren

Durch die integrierte COM-Anbindung ist es einfach, Applikationen wie Word und Excel über die Powershell fernzusteuern. Ausgehend von dem Beispiel auf http://command-line-programming.suite101.com/article.cfm/how_to_create_a_word_document_with_powershell, das ich etwas anpassen musste, hier ein ‚Minimalbeispiel‘:

$oWord = New-Object -Com Word.Application
$oWord.Visible = $true
 
$oMissing = [System.Reflection.Missing]::Value
$oDoc = $oWord.Documents.Add($oMissing, $oMissing, $oMissing, $oMissing)
 
# $odoc | get-Member save* |Select-Object definition| format-list
 
$oPara1 = $oDoc.Paragraphs.Add($oMissing)
 
$oPara1.Range.Style = "Überschrift 1"
$oPara1.Range.Text = "Hallo, ich bin etwas Text"
 
$oPara1.Range.InsertParagraphAfter()
$oPara1.Range.Text = "Hallo, ich bin etwas Text"
$oPara1.Range.InsertParagraphAfter()
 
$oPara2 = $oDoc.Paragraphs.Add($oMissing)
$oPara2.Range.Text = "Hier der zweite Absatz"
$oPara2.Range.InsertParagraphAfter()
 
$filename = "C:\MeinDokument.doc"
$oDoc.SaveAs([ref]$filename,[ref]$oMissing, 
[ref]$oMissing,[ref]$oMissing, [ref]$oMissing,
[ref]$oMissing,[ref]$oMissing,[ref]$oMissing, 
[ref]$oMissing,[ref]$oMissing, [ref]$oMissing,
[ref]$oMissing,[ref]$oMissing,[ref]$oMissing,
[ref]$oMissing)
 
$oDoc.Close()
$oWord.Quit()

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Mit Powershell SQL Server abfragen

Habe mir heut mal angeschaut, wie man mit Powershell Daten aus einer SQL Server Datenbank abfragen kann. Wie man es allgemein macht, muss ich noch rausfinden, folgendes (von http://thepowershellguy.com/blogs/posh/archive/2008/02/28/listing-all-the-databases-from-a-sql-server-from-powershell.aspx) läuft aber bei mir:

    $Server = '127.0.0.1' 
    $Database = 'Skript'
    $sqlCon = New-Object Data.SqlClient.SqlConnection
    $sqlCon.ConnectionString = "Data Source=$server;Integrated Security=True;Initial Catalog=$Database"
    $sqlCon.open()
    $sqlCmd = New-Object Data.SqlClient.SqlCommand
    $sqlCmd.Connection = $sqlCon
    $sqlCmd.CommandType = CommandType.Text
    $sqlCmd.CommandText = "SELECT Wert FROM Test"
    $sqlCmd.ExecuteReader() |% {$_.GetString(0)}

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Mit Powershell Dateien umbenennen

Ich hatte vor kurzem die interessante Aufgabe, Dateien umzubenennen, deren Namen folgenden Aufbau hatten: texttexttext_ttmmjjjj.xyz

Diese Namen sollten zu jjjjmmtt_texttexttext.xyz werden. Gelöste habe ich die Aufgabe mit zwei kurzen Powershell-Skripten

# Finde alle Dateien im aktuellen Verzeichnis, die am Ende des Dateinamens acht Ziffern haben
ls |  % { if ($_.name -match "\d{8}\.\w{3}$") {
# Ersetze diesen Dateinamen  durch das Datum
rni $_.fullname $_.name.replace($_.name,$_.name.substring($_.name.length-12,8)
# verbunden mit dem Dateinamen ohne Datum
+ "_" + $_.name.substring(0,$_.name.length-13)
# und der Dateiendung.
+ $_.name.substring($_.name.length-4,4))
  }}

Der zweite Teil, die Umsortierung des Datum war dann auch schnell erledigt:

# Suche alle Dateien, die mit acht Ziffern anfangen
ls |  % { if ($_.name -match "^\d{8}.*") { 
# Benenne die Datei um, erst das Jahr, dann der Monat
# dann der Tag
rni $_.fullname ($_.name.substring(4,4) + $_.name.substring(3,2)
+ $_.name.substring(0,2) + "_" 
+ $_.name.replace($_.name,$_.name.substring(9,$_.name.length-9)))
}}

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website