Task automation with Visual Basic Script

In case you want to automate some tasks, for example backing up a specific folder from your computer every time you plug in a specific USB-Stick.
All you need to do is to execute the following Visual Basic Script on your computer.
Place it in the Startup folder of Windows if you want it to run every time you login.
Script on your computer

Set Shell = CreateObject( "WScript.Shell" )
Set fso = CreateObject("Scripting.FileSystemObject")
Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colME = oWMI.ExecNotificationQuery("Select * from Win32_VolumeChangeEvent")

' Name of the Volume we are after
strVolumeName = "BACKUPDISK"

' Watch for new Drives
Do
Set oLE = colME.NextEvent
If oLE.EventType = 2 Then
' New Drive arrived
Set d = fso.GetDrive(oLE.DriveName)

If d.VolumeName = strVolumeName Then
Shell.Run oLE.DriveName & "\backup.vbs"
End If
End If
Loop

The Script will check for the Drivename (here: „BACKUPDISK“) and if the Drive is found it will execute the BackupScript on the USB-Stick.

Script (backup.vbs) on the USB-Stick

' This Script must be on the USB-Drive in the root directory
Set Shell = CreateObject( "WScript.Shell" )
Set fso = CreateObject("Scripting.FileSystemObject")

' Get the Userprofiledirectory & Computername
strUP = Shell.ExpandEnvironmentStrings( "%USERPROFILE%" )
strCN = Shell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
strDRV = fso.GetDriveName(WScript.ScriptFullName)

' Create a subfolder on the USB-Drive if it doesn't exist
If Not(fso.FolderExists (strDRV & "\Backup\" & strCN)) Then
fso.CreateFolder strDRV & "\Backup\" & strCN
End If

' Backup the Data (Overwrite existing files)
fso.CopyFolder strUP & "\Pictures", strDRV & "\Backup\" & strCN & "\", vbTrue

In this case all your pictures from the Picturefolder in your Userprofile are backed up.

ESXi 4.0 Disaster recovery

Einer der Schlimmsten Fälle ist wenn das Virtualisierte Produktivsystem einem im stich lässt.

Hier der Problemfall:

Aufgrund eines Systemfehlers wird der Datastorage auf dem die virtuellen Maschinen liegen nicht mehr erkannt und im vSphere Client wird dieser beim versuch ihn hinzuzufügen als leer dargestellt.

Lösungsansatz:

Da die Partition (Datastorage) mit den virtuellen Maschinen ein für Windows unbekanntes Dateisystem (vmfs) ist, entfällt die Möglichkeit die Daten über diesen Weg zu sichern.

Für Linux ist das VMFS-Dateisystem zwar auch nicht von haus aus lesbar, aber es gibt die so genannten vmfs-tools bei einigen Distributionen direkt im Repository um genau dies zu ermöglichen.

Für die Rettung der Maschinen empfehle ich die Debian 6 Distribution, da diese ausreichend getestete und stabile Pakete im Repository hat.

Nun aber auf zur Rettung der VMs:

  • ESXi System herunterfahren (sofern nicht schon geschen)
  • Eine zusätzliche Festplatte in das System einbauen

Die Festplatte sollte groß genug sein um die virtuellen Maschinen aufzunehmen!

  • Debian 6 mit SSH aber ohne Desktop auf der neuen Festplatte installieren
  • Als root anmelden und die vmfs-tools installieren. (apt-get install vmfs-tools)
  • Mit fdisk -l sich die Partitionen anzeigen lassen
    • Beispiel: VMFS Partition ist /dev/sda3
  • Mounten der VMFS Partition mit vmfs-fuse
    • zuerst modprobe fuse ausführen
    • Mountpoint in /media erstellen
    • Partition mounten
      vmfs-fuse /dev/sda3 /media/<mountpoint>

Wenn die Partition erfolgreich eingebunden wurde kann man jetzt die virtuellen Maschinen einfach auf die Linuxpartition kopieren.

Um die so gesicherten VMs direkt auf einen neuen ESXi Server (4.1) zu kopieren, aktiviert dessen SSH zugriff in den Troubleshoot Options.

Kopiert jetzt die gesicherten VMs mit Hilfe von scp auf den neuen ESXi.
scp -r <VM_directory> root@<your_ESXi_Server_IP>:/vmfs/volumes/<DataStorageName>

Im nächsten Schritt muss man die so auf den ESXi kopierten VMs mit Hilfe des vSphere Clients einbinden um diese starten zu können.

  1. Starten Sie den vSphere Client und melden sich am ESXi als root an
  2. Öffnen Sie in der Übersicht der Bestandsliste das Kontextmenü des Datenspeichers auf den Sie die VMs kopiert haben und wählen Sie den Punkt „Datenspeicher durchsuchen…“ aus.
  3. Navigieren Sie nun zu einer der kopierten VMs und öffnen den Ordner
  4. Öffnen Sie das Kontextmenü der .vmx Datei und wählen den Punkt „Zur Bestandsliste hinzufügen“ aus