26.01.2012, 13:16
Will man, wie hier beschrieben, eine E-Mail verschicken und dies an mehrere Empfänger, so kann man diese auch in einer “externen” Datei ablegen. Sinnvoll ist dies bspw. wenn ein Script im Fehlerfall bestimmte Empfänger benachrichtigen soll und man diese Empfänger nicht codiert im PowerShell Skript hinterlegen will.
Zu diesem Zweck legt man die E-Mail Adressen der Empfänger einfach zeilenweise in einer Textdatei ab und lässt diese dann vom PowerShell Skript einlesen und übergibt das Ergebnis an den Send-MailMessage Befehl.
1
2
3
4
5
6
7
8
9
10
11
12
13
| $i = 1;
$Recip = "";
$RecipientFile = (Get-Content C:\Temp\test.txt);
foreach ($Recipient in $RecipientFile)
{
if ($i -gt 1)
{ $Recip = $Recip + "," }
$Recip = $Recip + $Recipient
$i++;
}
$Recip = $Recip.TrimEnd();
$toAddress = $Recip.Split(",")
Send-MailMessage -To $toAddress -From sender@example.com -Subject MultipleRecipients -SmtpServer smtp@example.com |
25.01.2012, 09:10
Will man mittels PowerShell eine E-Mail versenden, so kann man hierfür die eingebaute Funktion »Send-MailMessage« verwenden. Will man hierbei auch Sonderzeichen im Text der Email verwenden, so muss man die Option »-Encoding« anhängen und den Zeichensatz UTF8 definieren. Ein einfaches Beispiel hierfür sieht wie folgt aus.
Send-MailMessage -Body 'Ein paar Sonderzeichen: äöüß' -Encoding ([System.Text.Encoding]::UTF8) -To receipient@example.com -From sender@example.com -SmtpServer smtp@example.com -Subject TestSubject
Muss man weitere Parameter übergeben, wie bspw. eine Authentifizierung gegenüber dem SMTP-Server, so findet man diese bei Microsoft im TechNet.
Send-MailMessage @ Microsoft TechNet
05.09.2011, 10:01
Wenn man in Visual Studio mehrere Projekte in einer Projektmappe hat, so hat man das Problem, dass immer nur ein Projekt als Startprojekt definiert sein kann. Dies hat zur Folge, dass, auch wenn man eine Datei eines anderen Projekts bearbeitet, bei Ausführung über »Debuggen starten« immer das aktuell definierte Startprojekt gestartet wird.
Genau aus diesem Grund wäre es schön, wenn es eine Möglichkeit gibt, mit der man immer das Projekt starten kann, in dem man auch gerade eine Datei bearbeitet.
Genau für diesen Zweck muss man einfach einen neuen Shortcut in Visual Studio definieren. Der entsprechende Eintrag in den Optionen heißt »KlassenansichtKontextmenüs.KlassenansichtProjekt.Debuggen.NeueInstanzstarten«, wie man auch im folgenden Screenshot sehen kann.

In meinem vorliegenden Beispiel habe ich hierfür einfach den Shortcut »Strg + Umschalt + Alt + F5« gesetzt. Somit kann ich immer das Projekt starten, in dem ich gerade eine Datei editiere. Unschön hierbei ist, dass wenn man ein Klassenbibliothek bearbeitet, man diese natürlich nicht ausführen kann. Somit passiert nichts bzw. man erhält dann eine Fehlermeldung , dass eine Klassenbibliothek nicht direkt ausgeführt werden.
Hierfür gibt es auch noch eine Lösung. Diese ist allerdings nur mittels eines Makro zu realisieren. Mir persönlich zu aufwendig aber vielleicht für den oder anderen dennoch interessant. Daher hier der Link zur Lösung: Visual Studio -> Debug – Start new instance shortcut
28.08.2011, 20:00
Der obige Titel trifft es relativ genau, zumindest aktuell, wenn man über die deutsche bzw. teilweise auch die internationale Politik nachdenkt.
Konkret geht es darum, dass ich durch Zufall gerade gesehen habe, dass es wieder eine Petition zum “Verbot der Vorratsdatenspeicherung vom 15.03.2011″ gibt.
Hierzu gibt es auch eine Meldung bei heise.de, aber in den Massenmedien hat man hierzu leider in den letzten Tagen gar nichts gefunden. Der Artikel auf heise.de fasst schon relativ gut zusammen, um was es inhaltlich geht, darum spare ich mir eine erneute Zusammenfassung an dieser Stelle.
Jeder mag seine eigene Meinung zur Vorratsdatenspeicherung haben aber ich kann es nicht gutheißen, dass die gesamte Bevölkerung unter Generalverdacht gestellt wird und jegliche Kommunikation bzw. deren Verbindungsdaten aufgezeichnet wird.
Ich kann daher nur dazu aufrufen, diese Petition auch zu unterzeichnen und so den Politkern deutlich zu machen, dass den Bürgern in diesem Land eben doch nicht alles völlig egal ist, wie vielleicht mancher Politiker durchaus glauben mag.
18.07.2011, 21:01
Grundsätzlich verwendet Google Chrome unter Windows die gleichen Netzwerkeinstellungen, die auch der Internet Explorer verwendet. Wenn man also nur für Chrome einen Proxy einstellen möchte, der für Chrome gilt, für den IE aber nicht, so ist man mit Bordmitteln aufgeschmissen.
Die Möglichkeit besteht aber trotzdem. Man kann hierzu Chrome mit einem Parameter von der Kommandozeile aus starten. In der Regel liegt die ausführbaren Dateien von Chrome im Verzeichnis »C:\Users\Username\AppData\Local\Google\Chrome\Application\«
chrome.exe --proxy-server="localhost:1111"
Führt man das oben stehende Beispiel aus, so würde Chrome versuchen die Verbindungen über einen Proxy auf »localhost« mit Port »1111« durchzuführen.
Will man einen SOCKS-Proxy verwenden, so kann man dies wie im folgenden Beispiel machen:
chrome.exe --proxy-server="socks5://localhost:4444"
Quelle: How do I set Chrome up with my proxy?
14.07.2011, 13:03
Etwas reißerisch die Überschrift, aber so ist gestern auch die Süddeutsche Zeitung vorgegangen, als sie den Artikel »Google rückt dem Nutzer noch mal näher« veröffentlicht hat.
Grundsätzlich ist es ja kein Geheimnis, dass Google über Werbung Geld verdient und nur so auch Dienste kostenlos anbieten kann. In der beschriebenen Art und Weise hätte es allerdings eine neue Qualität des Datenhandels bedeutet.
Wie man aber nun bei tarzun.de lesen kann, ist alles gar nicht halb so wild.
Wie so häufig ist an dieser Stelle eine gewisse Medienkompetenz zu besitzen und nicht alles als bare Münze nehmen ohne die Hintergründe/Quellen zu hinterfragen.
Von daher mein Fazit, alles halb so wild bzw. eigentlich ändert sich gar nichts.
12.07.2011, 20:35
Die folgenden Informationen stehen zwar schon an X Stellen im Netz, aber damit ich immer weiß, wo ich auf die schnelle nachsehen kann, schreibe ich sie hier auch noch einmal nieder.
Ein Projekt ist nach DIN 69901 ein Vorhaben, das im Wesentlichen durch die Einmaligkeit der Bedingungen in ihrer Gesamtheit gekennzeichnet ist, wie z.B.
- Zielvorgabe
- zeitliche, finanzielle, personelle oder andere Begrenzungen
- Abgrenzung gegenüber anderen Vorhaben
- projektspezifische Organisation
Wichtig bei einem Projekt ist auch noch, dass es ein Ziel gibt, das erreicht werden soll. Dieses Ziel sollte die folgenden Kriterien erfüllen:
- klare Definition
- einen festgelegten Durchführungszeitraum
- einen Namen haben
- realistisch durchführbar sein
- überprüf- und messbar sein
- einen positiven Charakter haben
26.06.2011, 22:44
Damit ich nicht jedes Mal wieder nach sehen muss, wie die Heap-Size mittels JAVA_OPTS definiert werden kann, schreibe ich es mal kurz hier auf.
-Xms – initiale Größe des Heap
-Xmx – maximale Größe des Heap
27.04.2011, 18:00
Falls jemand aus Gründen, so wie ich, auf der Suche nach der oben genannten alten Version von Java sein sollte, nachfolgend die Downloadlinks.
Java SE Development Kit 5.0u16
Java SE Runtime Environment 5.0u16
28.02.2011, 21:43
Will man eine Datei von einem Verzeichnis automatisch in anderes Verzeichnis kopieren, so kann man dies unter Windows relativ einfach mit einer Batch-Datei und der Aufgabenplanung erledigen.
Will man allerdings die Datei nur kopieren, wenn die Datei im Quellverzeichnis neuer ist als die Datei im Zielverzeichnis so geht dies mit einer Batch-Datei schon nicht mehr so einfach.
Zu diesem Zweck kann man sich aber ein PowerShell Skript schreiben, dass genau diese Funktionalität abbildet. Falls man bisher noch keine PowerShell Skripte auf seinem Rechner eingesetzt hat, muss man zunächst die sogenannte »ExecutionPolicy« ändern. Weitere Infos hierzu kann man dem folgenden Link entnehmen: Running Scripts From Within Windows PowerShell.
Abgekürtzt reicht es aus, wenn man eine Instanz der PowerShell als Administrator (also als Administrator ausführen) startet und den folgenden Befehl ausführt:
Set-ExecutionPolicy Unrestricted
Die Abfrage einfach mit »J« beantworten.
Auf einem Testsystem kann man diesen Befehl so verwenden, auf einem produktiven System (bspw. Server) sollte man dies nicht einsetzen, wenn man nicht weiß, welche Konsequenzen hieraus resultieren können.
$BackEndDir = "C:\PowerShellCopy\Backend\"
$BackEndFile = "ImportantInformation.txt"
$FrontEndDir = "C:\PowerShellCopy\Frontend\"
if ( !$BackEndDir.EndsWith("\") )
{ $BackEndDir = $BackEndDir + "\" }
if ( !$FrontEndDir.EndsWith("\") )
{ $FrontEndDir = $FrontEndDir + "\" }
$BackFile = $BackEndDir + $BackEndFile
$FrontFile = $FrontEndDir + $BackEndFile
if ( !(Test-Path $BackFile) )
{
Write-Host("Datei im Backend ist nicht vorhanden")
return
}
$objBackFile = get-item $BackFile
$objBackFileLWT = [datetime]$objBackFile.LastWriteTimeUTC
Write-Host ("BackEndDatei: " + $objBackFileLWT)
If ( (Test-Path $FrontFile) )
{
echo "Datei vorhanden"
$objFrontFile = get-item $FrontFile
$objFrontFileLWT = [datetime]$objFrontFile.LastWriteTimeUTC
Write-Host ("FrontEndDatei: " + $objFrontFileLWT)
if ($objBackFileLWT -gt $objFrontFileLWT)
{
Write-Host ("Datei wird im FrontEnd aktualisiert")
Copy-Item $BackFile $FrontEndDir
}
else
{
Write-Host ("Datei im FrontEnd ist gleich alt bzw. aktueller")
}
}
Else
{
Write-Host ("Datei nicht vorhanden")
}
Für die eigene Verwendung müssen im Grunde nur noch die Verzeichnispfade und der Dateiname in den ersten drei Zeilen angepast werden.
Führt man dann dieses PowerShell Skript mittels der Aufgabenplanung aus, so wird die Datei aus dem Backend-Verzeichnis immer dann in das Frontend-Verzeichnis kopiert, nur wenn diese auch wirklich aktueller ist. Somit ist man immer auf dem aktuellsten Stand, verhindert aber unnötige Kopieraktionen, was gerade bei großen Dateien ein Vorteil sein kann.
Quellen:
Converting the FileSystemObject’s FileExists Method
Using the Copy-Item Cmdlet
Verwenden des Cmdlet “Set-ExecutionPolicy”
Windows PowerShell Tip: The String’s the Thing