VBS: Email versenden mit Outlook
Als Parameter kann Empfänger sowie die Antwortadresse angegeben werden. Die eMail Adresse wird auf Format geprüft.
' ################################
'
' SendMail.vbs
'
VBS Einzeiler zum ermitteln von 64 oder 32 Bit Windows Betriebssystem
Der Fuktionsaufruf gibt 64 oder 32 zurück.
GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").AddressWidth
vSphere 5 Lizenzierung
VMware hat leider beschlossen mit Version 5 das Konzept der bisherigen "Per Socket" Lizenzen aufzuweichen, und zusätzlich noch nach vergebenen Arbeitsspeicher (Arbeitspeicher der einer VM max. zur Verfügung gestellt wurde) zu lizenzieren.
Folgende Staffelung ist aktuell vorgesehen (Je Lizenz)
- Essentials, Essentials Plus oder Standard = 1 x Socket + 24 GB vRAM
- Enterprise: 1 x Socket + 32 GB vRAM
- Enterprise Plus: 1 x Socket + 48 GB vRAM
Wenn man ein vCenter verwendet werden die vRAM Kapazitäten der gesamten Infrastruktur zur Verfügung gestellt, d.h. es wird ein vRAM Pool gebildet.
Howto: ESXi 4.1 auf USB Stick installieren

Aktuelles ISO File herunterladen
Aktuelles VMware ESXi DVD Image von VMware oder dem Serverhersteller herunterladen:
http://downloads.vmware.com/d/info/datacenter_downloads/vmware_vsphere_4/4_0
Für HP,Fujitsu, Hitachi und Dell Server gibt es hier vom Hersteller mit Custom CIM Providern angepasste ISO Files:
http://downloads.vmware.com/d/details/esxi41u1/ZHcqYnRlQEBiZCpwaA==#drivers_tools
String mit .NET komprimieren und und mit Ruby wieder entpacken
Das hab ich gebastelt um einen XML String aus .NET über POST Request an eine Ruby on Rails Applikation zu übertragen und dort weiterzuverarbeiten. Um beim senden keine Probleme zu verursachen wird der GZIP komprimierte String BASE64 kodiert.
.NET Code (VB.NET 2010)
Imports System.Security.Cryptography
Imports System.IO.Compression
Public Function Compress(ByVal text As String) As String
Try
Dim buffer() As Byte = Encoding.UTF8.GetBytes(text)
Dim memoryStream = New MemoryStream()
Using gZipStream = New GZipStream(memoryStream, CompressionMode.Compress, True)
gZipStream.Write(buffer, 0, buffer.Length)
End Using
Return Convert.ToBase64String(memoryStream.GetBuffer)
Catch ex As Exception
WriteToDebugLog("Compress", ex.Message)
Return Nothing
End Try
End Function
RoR Code (Ruby 1.9.2 / Rails 3)
require "base64" require 'nokogiri' xml = ActiveSupport::Gzip.decompress(Base64.decode64( )) xml_doc = Nokogiri::XML(xml) do |config| config.noblanks end # Zugriff auf Elemente über xml_doc.xpath()
Evtl. hilfts ja jemandem bei was auch immer.
VMware ESXi 4.1 verliert Management Network Verbindung
An einem unserer Standorte habe ich ab und zu das Problem das alle drei ESXi 4.1 Hosts gleichzeitig die Verbindung zum vCenter in der Zentrale verlieren. Alle Server sind von meinem Standort aus nicht per Ping erreichbar, vom lokalen Standort aus aber schon. Hier vermute ich ein Problem im Zusammenspiel mit unserem Nortel Switch vor Ort. Ein Neustarten des Mmnt. Networks über die Consolen GUI half nur bei einem der Server.
Als ich mir die Konfiguration der Hosts angeguckt habe ist mir folgendes aufgefallen:
ESX1
vmk0: Management Network
ESX 2 und 3
vmk0: vMotion Network
d.h. ein Neustart über die GUI startet bei 2/3 nicht das Management Network sondern die vMotion Network neu (Lt. VMware wohl ein bereits bekanntes Problem). Um die Maschinen ohne neustart wieder ans Netz zu bekommen habe ich folgende Aktionen durchgeführt:
- Per Remote Consolen Mngmt Software auf den Server schalten (ILO oder ähnliches)
- Den Local Tech Support Mode aktivieren
- Über die Console das bestehende Management Network löschen
-
esxcfg-vmknic -d "<Name des Management Network>"
-
- und neu erstellen:
-
esxcfg-vmknic -a "<Name des Management Network>" -i <IP Adresse> -n <Netzwerkmaske>
-
Sofort danach waren die Maschinen wieder ansprechbar. Jetzt muss ich nur noch raus finden woran genau der Connection Lost herkommt.
Snow Leopard in VMware Workstation 7.1
Voraussetzungen
- CPU mit erweiterten Virtualisierungs-Funktionen
Intel: Intel VT
AMD: AMD-V
Diese sind u. A. notwendig um unter VMware ein 64Bit Betriebssystem zu betreiben. Ob man eine kompatible CPU hat kann meistens einfach im BIOS herausgefunden werden, denn da kann man die entsprechende Funktion ein- und ausschalten. Wenn nicht, einfach danach googeln. Die Core2Duo/Quad können es z.B. fast alle. Mit AMD habe ich leider zu wenig Erfahrung um hier vernünftige aussagen treffen zu können.
- Mindestens 2 GB RAM, besser sind 4-8GB
- Eine Snow Leopard Installations-DVD
- VMware Workstation 7.1.1
Eine voll Funktionstüchtige Demo Version kann man sich bei http://www.vmware.com herunterladen. Nach dem Testzeitraum steht nur noch der VMware Player zur Verfügung. Dieser reicht aber vollkommen aus um das OSx System weiter zu verwenden.
- Ein Boot CD-Image (nach darwin_snow.iso googeln)
Das ISO File kann man mittlerweile an vielen Stellen im Netz herunterladen. Da ich leider nicht weiß, ob man bzw. wessen Rechte man damit verletzt lass ich das direkte verlinken.
- Entsprechend Festplattenplatz
Anmerkung: Solange nichts anderes dabeisteht, einfach mit "Next", "Weiter", "Fortfahren", "Beenden" oder ähnlichem fortsetzen. Das jedesmal zu schreiben ist mir zu umständlich.
*-Tage alte Druckaufträge löschen
Nur das ichs nicht wieder verliere.
Die Aufgabe des Powershell Scripts ist/war es, Druckaufträge eines Druckers nach einem definierten alter (Hier drei tage) automatisiert zu löschen. War für irgend ein SAP->Packzettel->Ausfallkonzept das ich aber nicht ganz verstanden habe ^^. Mein Part war nur das mit den Druckern
$strPrintername = "PS-NM-TEST*"
$PrintJobs = get-wmiobject -class "Win32_PrintJob" -namespace "root\CIMV2" | Where-Object { $_.Name -like $strPrintername -and $_.ConvertToDateTime($_.TimeSubmitted) -lt $($(Get-Date).addMinutes(-3))}
foreach ($job in $PrintJobs)
{
if ($job) {
Write-Host "Job $($job.JobId) canceled"
$job.Delete()
}
else {
Write-Host "Nothing to delete"
}
}
vMotion Fehler auf HP Servern und HP NC375x Network Adapter
Beim Testlauf meiner beiden neuen vSphere 4.1 Hosts habe ich festgestellt das bei Servern mit >1 GB RAM der vMotion vorgang mit folgender Fehlermeldung abbricht:
A general system error occurred: Migration failed while copying
data. Already disconnected.
Mit folgenden Fehlerdetails
Migration to host <<unknown>> failed with error Already disconnected (195887150).
vMotion migration [-1407644152:1291646678441186] write function failed.
vMotion migration [-1407644152:1291646678441186] failed to flush channel: Already disconnected
vMotion migration [-1407644152:1291646678441186] socket connected returned: Already disconnected
Die behebung dieses Problems ist ein wenig aufwendig. Zuerst scheint der mit 4.1 eingesetzte nx_nic Treiber in Version 4.0.550 Probleme mit NC375x Quadport Karten zu haben.
KB 1027206: Determining NIC firmware and driver version in ESX/ESXi 4.x
Nach dem Update der nx_nic Treiber auf Version 4.0.570 ist das Problem gelöst.
Aktuelle VMware Treiber für die QLogic Netzwerkkarte gibt es hier. Installationsanleitung liegt bei (Bei ESXi einfach das vSphere CLI verwenden)
Das gesamte Problem ist auch hier beschrieben: KB 1026021: vMotion fails on ESX/ESXi 3.5 and 4.0 with some versions of nx_nic and unm_nic drivers
Align Windows 2003 Partitionen fürs NetApp Storage
Microsoft DiskPart Version 5.2.3790.3959
Copyright (C) 1999-2001 Microsoft Corporation.
Auf Computer: XXXXXX
DISKPART> list disk
Datentr. Status Größe Frei Dyn GPT
-------- ---------- ------- ------- --- ---
0 Online 34 GB 0 B
1 Online 136 GB 0 B
2 Online 550 GB 0 B
3 Online 200 GB 200 GB
DISKPART> select disk 3
Datenträger 3 ist jetzt der gewählte Datenträger.
DISKPART> create partition primary align=64
Die angegebene Partition wurde erfolgreich erstellt.
Danach ganz normal in der Festplattenverwaltung formatieren.
Irgenwann kann ich's mir merken, ganz bestimmt
(Oje)
Tipps für VMware Data Recovery 1.1
Nachdem ich jetzt die Data Recovery Appliance ein paar Wochen im Betrieb habe konnte ich folgende Verbesserungen bzw. Workarrounds durchführen:
Nach Arbeitsspeichererhöhung der Appliance von 2 auf 4 GB hat sich die Performances meines Erachtens merklich verbessert. Der Service stürzt jetzt auch nicht mehr so oft ab.
Eine CPU Erhöhung von 2 auf 4 hat leider nicht so viel gebracht.
Wenn man nicht auf ein VMDK oder Raw Device schreibt sondern über Netzwerk auf eine CIFs Share sollte man unbedingt die IP Adresse des Servers und nicht den Namen verwenden. Hat bei mir einige der "Task terminated enexpectedly, possibly due to a power failure or system crash." Fehler behoben.
Die Reports kann man nicht löschen und sie werden scheinbar in Version 1.1 nicht automatisch bereinigt. Falls man die Einträge unbedingt loswerden möchte kann man folgendes tun:
Die beiden Dateien Config10.dat und Config10.bak im Verzeichnis /var/vmware/datarecovery/ beinhalten sowohl Backup-Konfiguration als auch alle Reports. Die Dateien können nachdem man den Dienst mit "service datarecovery stop" beendet hat gelöscht werden.
Allerdings muss man dann die Appliance neu konfigurieren. D.h. alle Backupjobs und Backupziele sind erstmal nicht mehr vorhanden. Die Restorepoints werden wieder angezeigt sobald man das Backupziel wieder korrekt konfiguriert hat.
Sehr umständlich aber es funktioniert, ich hoffe VMware baut in die nächste Version eine Logfile Verwaltung mit ein.
p.s. die standard Zugangsdaten zur Appliance sind root // vmw@re
Edit: Mit Version 1.2 ist's besser geworden
Lokale PHP Einstellungen bei einem IIS 6.0 vhost mit PHP als ISAPI Modul
Die VHOST Dateien liegen unter c:\inetpup\vhost\ und man möchtest das display_errors für genau diesen vhost auf ON gestellt ist.
Einfach einen Registry Wert vom Typ String unter:
HKLM\Software\PHP\Per Directory Values\c\inetpup\vhost\
erstellen.
Name: display_errors
Wert: ON
Das geht mit allen php.ini Einstellungen, mit denen die ich versucht habe zumindest.
Standortabhängiges Anmeldescript
Den aktuellen Standort eines Benutzers zu ermitteln, definiert durch die Active Directory Sites, funktioniert folgender VBS Code:
On Error Resume Next
Set wshShell = WScript.CreateObject( "WScript.Shell" )
strUserDomain = wshShell.ExpandEnvironmentStrings( "%USERDOMAIN%" )
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("SELECT ClientSiteName FROM Win32_NTDomain WHERE DomainName = '"& strUserDomain &"'",,48)
For Each objItem in colItems
' Hier wird der erkannte Sitename der Anmeldedomäne ausgegeben.
strSiteName = objItem.ClientSiteName
next
select case strSiteName
case "Berlin"
' Tu irgendwas
case "München"
' Tu irgendwas anderes
end select
Getestet unter Windows XP, Windows 2003, Vista und Windows 7.
Der nervende Edelstein
Ich freunde mich gerade mit Ruby on Rails an, da war es naheliegend sich eine schöne IDE dafür zu suchen die bereits Testserver und alles enthält so das man sich nicht mit der Installation des selbigen herumschlagen muss.
Meine Wahl fiel dabei auf Aptana RadRails, ein wirklich nettes Produkt.
Das einzige Problem was ich bisher hatte, und das auch nur auf dem Laptop hier im Büro, war das grundlose verweigern jeder Art von Plugin-Installation via GEM.
Jeder Versuch wurde mit
ERROR: While executing gem ... (Errno::ENOENT)
No such file or directory - U:/
quitiert. Das Laufwerk U:/ ist mein Homedrive im Netzwerk.
Die Lösungsvorschläge aus dem Netz, die Umgebungsvariablen “GEM_HOME” und “GEM_PATH” zu setzen hatten leider keinen positiven Effekt.
Ein kleiner Eintrag in der gem Datei unter c:\ruby\bin\gem bringt die Erlösung:
#!C:/Ruby/bin/ruby.exe
#--
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
# All rights reserved.
# See LICENSE.txt for permissions.
#++
ENV['HOME'] = "C:/ruby"
require 'rubygems'
require 'rubygems/gem_runner'
require 'rubygems/exceptions'
required_version = Gem::Requirement.new "> 1.8.3"
unless required_version.satisfied_by? Gem.ruby_version then
abort "Expected Ruby Version #{required_version}, was #{Gem.ruby_version}"
end
args = ARGV.clone
begin
Gem::GemRunner.new.run args
rescue Gem::SystemExitException => e
exit e.exit_code
end
Vielleicht gibts noch eine bessere Lösung, so funktioniert es bei mir aber auf alle Fälle ohne herumdoktorn an den Umgebunsvariablen.
Problem mit Unicode Zeichen in Javascript Alertbox
Wenn man man mal in die Verlegenheit kommt und versucht über Javascript eine z.B. Russische Fehlermeldung auszugeben gibt es folgendes Problem: Der Browser spielt nicht mit :(
<script language="javascript">
alert('Журналистка CNN Хала Горани беседует с Мэтью Чансом - он был знаком с Натальей');
</script>
Das Ergebnis, trotz korrekter UTF-8 Einstellung des Browsers und der Webseite, überzeugt leider nicht.

Die Lösung: Der Text muss vorher für Javascript vorbereitet werden, pures Unicode scheint da wohl nicht zu funktionieren.
<script language="javascript">
alert('\u0416\u0443\u0440\u043D\u0430\u043B\u0438\u0441\u0442\u043A\u0430 CNN \u0425\u0430\u043B\u0430 \u0413\u043E\u0440\u0430\u043D\u0438 \u0431\u0435\u0441\u0435\u0434\u0443\u0435\u0442 \u0441 \u041C\u044D\u0442\u044C\u044E \u0427\u0430\u043D\u0441\u043E\u043C - \u043E\u043D \u0431\u044B\u043B \u0437\u043D\u0430\u043A\u043E\u043C \u0441 \u041D\u0430\u0442\u0430\u043B\u044C\u0435\u0439');
</script>
Schon besser finde ich

Einen praktischen Konverter gibt es hier: http://rishida.net/tools/conversion/
/yay
p.s. das Russisch ist von einer zufälligen Webseite, und Google sagt ich beleidige mit dem Satz niemanden. Wenn doch tuts mir leid