@ECHO OFF SETLOCAL SETLOCAL ENABLEEXTENSIONS REM Attach a USB flash device to a specified VM on XenServer 4.x REM ------------- EDIT THE OPTIONS BELOW TO SUIT YOUR ENVIRONMENT ------------- REM XenServer Credentials SET XE_USERNAME=root SET XE_PASSWORD=i2606^! SET XE_SERVER=192.168.19.30 SET XE_HOST=SERVER REM XenCenter Path SET XE_CENTER_PATH=C:\programme\citrix\XenCenter\ REM XE Binary and Baseline Parameters SET XE_EXEC="%XE_CENTER_PATH%\xe.exe" -s %XE_SERVER% -u %XE_USERNAME% -pw %XE_PASSWORD% REM Temporary working file SET TEMP_FILE=%TEMP%/xs-usbmount.tmp REM Removable Storage Repository UUID %XE_EXEC% sr-list name-label="Removable storage" --minimal > %TEMP_FILE% SET /P REMOVABLE_SR_UUID= < %TEMP_FILE% echo Removeable SR %REMOVABLE_SR_UUID%. REM UUID of the VM you wish to attach the USB storage to %XE_EXEC% vm-list name-label=%XE_HOST% --minimal > %TEMP_FILE% SET /P VM_UUID= < %TEMP_FILE% echo VM %VM_UUID%. REM Device name/order on the VM (e.g. hdb, hdc, hdd...) set DEVICE_NAME=hdc REM --------------------------------------------------------------------------- REM ------------ DO NOT EDIT BEYOND THIS LINE ---------------- IF "%1"=="ATTACH" GOTO ATTACH_STORAGE IF "%1"=="DETACH" GOTO DETACH_STORAGE REM No parameters echo (c)2011, C1.IT solutions, 28.2.11 echo Usage USBMOUNT.BAT ^ GOTO END :DETACH_STORAGE if NOT %2.==. echo.Look for %2 if %2.==. %XE_EXEC% vdi-list sr-uuid=%REMOVABLE_SR_UUID% params=vbd-uuids --minimal > %TEMP_FILE% if NOT %2.==. %XE_EXEC% vdi-list sr-uuid=%REMOVABLE_SR_UUID% params=vbd-uuids name-description=%2 --minimal > %TEMP_FILE% SET /P VBD_UUIDS= < %TEMP_FILE% echo.Attached VM %VBD_UUIDS% IF "%VBD_UUIDS%"=="" GOTO NOT_BOUND %XE_EXEC% vbd-unplug uuid=%VBD_UUIDS% %XE_EXEC% vbd-destroy uuid=%VBD_UUIDS% echo.Storage Detached GOTO END :ATTACH_STORAGE REM See if the storage is already bound to a VBD if NOT %2.==. echo.Look for %2 if %2.==. %XE_EXEC% vdi-list sr-uuid=%REMOVABLE_SR_UUID% params=vbd-uuids --minimal > %TEMP_FILE% if NOT %2.==. %XE_EXEC% vdi-list sr-uuid=%REMOVABLE_SR_UUID% params=vbd-uuids name-description=%2 --minimal > %TEMP_FILE% SET /P VBD_UUIDS= < %TEMP_FILE% echo.Attached VM %VBD_UUIDS% IF NOT "%VBD_UUIDS%"=="" GOTO ALREADY_BOUND if %2.==. %XE_EXEC% vdi-list sr-uuid=%REMOVABLE_SR_UUID% --minimal > %TEMP_FILE% if NOT %2.==. %XE_EXEC% vdi-list sr-uuid=%REMOVABLE_SR_UUID% params=uuid name-description=%2 --minimal > %TEMP_FILE% SET /P VDI_UUID= < %TEMP_FILE% %XE_EXEC% vbd-create vm-uuid=%VM_UUID% device=%DEVICE_NAME% vdi-uuid=%VDI_UUID% --minimal > %TEMP_FILE% SET /P VBD_UUID= < %TEMP_FILE% %XE_EXEC% vbd-plug uuid=%VBD_UUID% echo.VBD UUID attached as: %VBD_UUID% sleep 15 GOTO END :ALREADY_BOUND echo.Removable storage already attached to a VM - aborting. GOTO END :NOT_BOUND echo.Storage device not bound to any VMs - aborting. GOTO END :END endlocal