Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 2
Благодарности: 2

Профиль | Отправить PM | Цитировать


Большое спасибо за объяснения и скрипт.
С вашего разрешения добавлю немного измененную версию для англ. версии Hyper-V сервера
Код: Выделить весь код
@ECHO OFF
::---------- путь к файлам Hyper-V, где хранятся ссылки:
set HYPER-V_PATH=c:\ProgramData\Microsoft\Windows\Hyper-V
::---------- переменная содержит ID ВМ 
set VM_ID=""
::---------- переменная содержит путь к ВМ
set VM_PATH=""
::---------- переменная содержит ID снимка ВМ
set SNAP_ID=""
 
:MAINMENU
set answer=""
cls
echo -------------------------------------------------
echo Menu
echo -------------------------------------------------
echo  1: Make Hard Links for Virtual Machine
echo  2: Make Hard Links for Virtual Machine Snapshots
echo  3: Exit
echo -------------------------------------------------
set /p answer=Enter Menu Item: 
if %answer% equ 1 goto MENUVM
if %answer% equ 2 goto MENUSNAP
if %answer% equ 3 (goto :EOF) else goto MAINMENU
 

::----- если нажата единица, то прописываем HardLink для ВМ
:MENUVM
set /p VM_ID=Enter Virtual Machine GUID: 
set /p VM_PATH=Enter path to Virtual Machine: 

if exist "%VM_PATH%\Virtual Machines\%VM_ID%.xml" (
	:: ----- если находим прежние хардлинки, то удаляем (необходимо, при использование Backup Exec)
	if exist "%HYPER-V_PATH%\Virtual Machines\%VM_ID%.xml" del /F /Q "%HYPER-V_PATH%\Virtual Machines\%VM_ID%.xml"
	:: ----- останавливаем службу "Управления виртуальными машинами Hyper-V"
	net stop vmms
	:: ----- создаём хардлинк на XML-файл снимка ВМ
	mklink /H "%VM_ID%.xml" "%VM_PATH%\Virtual Machines\%VM_ID%.xml"
	:: ----- перемещаем хардлинк туда, где он должен быть
	move /Y "%VM_ID%.xml" "%HYPER-V_PATH%\Virtual Machines\"
	:: ----- запускаем службу "Управления виртуальными машинами Hyper-V" (Необходимо чтобы ID ВМ зарегистрировался и icacls отработала корректно)
	net start vmms
	pause
	:: ----- устанавливаем необходимую NTFS-безопасность
	icacls "%HYPER-V_PATH%\Virtual Machines\%VM_ID%.xml" /grant "NT VIRTUAL MACHINE\%VM_ID%":F /T
	pause
	goto MAINMENU
) else (
	echo ERROR: Snapshot XML-file not found! Try one more time...
	pause
	goto :EOF
)


::----- если нажата двойка, то прописываем HardLink для снимка ВМ (предполагается, что ВМ уже зарегистрирована иначе icacls отработает не коректно)
:MENUSNAP
if %VM_ID%=="" set /p VM_ID=Enter Virtual Machine GUID: 
if %VM_PATH%=="" set /p VM_PATH=Enter path to Virtual Machine: 
set /p SNAP_ID=Enter Snapshot GUID: 

if exist "%VM_PATH%\Snapshots\%SNAP_ID%.xml" (
	:: ----- если находим прежние хардлинки, то удаляем (необходимо, при использование Backup Exec)
	if exist "%HYPER-V_PATH%\Snapshots\%SNAP_ID%.xml" del /F /Q "%HYPER-V_PATH%\Snapshots\%SNAP_ID%.xml"
	:: ----- создаём хардлинк на XML-файл снимка ВМ
	mklink /H "%SNAP_ID%.xml" "%VM_PATH%\Snapshots\%SNAP_ID%.xml"
	:: ----- перемещаем хардлинк туда, где он должен быть
	move /Y "%SNAP_ID%.xml" "%HYPER-V_PATH%\Snapshots\"
	pause
	:: ----- устанавливаем необходимую NTFS-безопасность
	icacls "%HYPER-V_PATH%\Snapshots\%SNAP_ID%.xml" /grant "NT VIRTUAL MACHINE\%VM_ID%":F /T
	pause
	goto MAINMENU
) else (
	echo ERROR: Snapshot XML-file not found! Try one more time...
	pause
	goto :EOF
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:31, 15-09-2011 | #2