суббота, 18 мая 2013 г.

Скрипт для поиска по номеру KB и извлечения обновлений с сервера WSUS

Данный скрипт, написанный на Visual Basic Script, позволяет извлекать необходимые номера KB из контента WSUS-сервера. Запускать его следует только на самом сервере WSUS. Для работы понадобятся привилегии локального администратора и администратора сервиса WSUS.
Текст скрипта приведен ниже:


'Export KB Files from WSUS
dim obj, obj_from, obj_to, oExec, WshShell, oFSO, objTextFile, obj_srv, obj_db
title = "Export KB Files from WSUS"

Set WshShell = CreateObject("WScript.Shell")
Set obj = CreateObject("Shell.Application")
Set oFSO = CreateObject("Scripting.FileSystemObject")

obj_from = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Update Services\Server\Setup\ContentDir")
obj_from = obj_from&"\WsusContent"

obj_srv = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Update Services\Server\Setup\SqlServerName")

obj_db = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Update Services\Server\Setup\SqlDatabaseName")

set obj_to = obj.browseforfolder(0,"Укажите путь к папке, в которую будут помещены "&Chr(13)&"извлекаемые обновления.",&H0001,&H0000)
if obj_to is Nothing then
wscript.quit(1)
end if
path_to = obj_to.self.path

request = "osql -o export.lst -h-1 -w 300 -E -d "
request=request&obj_db
request=request&" -S "
request=request&obj_srv
request=request&" /Q "&Chr(34)&"select FileDigest,FileName from tbFile where"

KB = InputBox("Введите номер нужного обновления, например KBxxxxxx",title) 
if KB = "" then
wscript.quit(1)
else
request=request&" FileName like '%%"&KB&"%%'"
end if

request=request&"and (FileName like '%%ENU%%' or FileName like '%%RUS%%') and FileName like '%%.exe%%' and FileName not like '%%express%%' and FileName not like '%%IE%%' order by Modified"&Chr(34)

If oFSO.FileExists(".\export.lst") Then
oFSO.DeleteFile(".\export.lst")
end if

Set oExec = WshShell.Exec(request)

Do While oExec.Status = 0
WScript.Sleep 100
Loop

IF oExec.ExitCode = 1 then 
MsgBox "Не удалось подключиться серверу WSUS..:("
oFSO.DeleteFile(".\export.lst")
wscript.quit(1)
end if

set objTextFile = oFSO.OpenTextFile(".\export.lst",1)

Do Until objTextFile.AtEndofStream
strNextLine=objTextFile.ReadLine
strNextLine=trim(strNextLine)

IF InStr (strNextLine,".exe") then
 newArray=Split(strNextLine)
 WSUSFile   = right(newArray(0),40)&".exe"
 WSUSFolder = right(newArray(0),2)
 If oFSO.FileExists(obj_from&"\"&WSUSFolder&"\"&WSUSFile) Then
 oFSO.CopyFile obj_from&"\"&WSUSFolder&"\"&WSUSFile, path_to&"\"&newArray(1)
 end if  
end if

Loop
objTextFile.Close
oFSO.DeleteFile(".\export.lst")
MsgBox "Операция выполнена успешно! :)"

Set obj = Nothing
Set obj_from = Nothing
Set obj_to = Nothing
Set oExec = Nothing
Set WshShell = Nothing
Set oFSO  = Nothing
Set objTextFile = Nothing


Поместите скрипт в текстовый файл с расширением ".vbs". После запуска понадобится указать путь для извлекаемых обновлений и номер KB, который нам нужен. Скрипт произведет поиск по базе WSUS-сервера и скопирует необходимые файлы из папок контента.

четверг, 16 мая 2013 г.

Решение проблемы восстановления свёрнутого окна консоли гостевой машины в VMware vSphere Client 5

Проявляется следующим образом:  если открыть несколько окон различных виртуальных машин по команде "Open Console", затем свернуть в панель задач, некоторые из них обратно разворачиваться не станут, проблемные окна придется закрывать и открывать заново.
Согласно kb.vmware.com/kb/1033948 в данный момент не существует обновления, решающего эту проблему с клиентом. Но есть обходное решение:

1. Отключаем группировку кнопок панели задач, для этого кликаем правой кнопкой по панели и вызываем свойства.
2. Далее, для Windows XP/2003/Vista/2008 - снять галочку напротив "Группировать сходные кнопки панели задач", для Windows 7/2008R2/8/2012 - в выпадающем меню пункта "Кнопки панели задач" выбрать "Не группировать". Применить изменения и закрыть окно настроек.
3. Также VMware, для решения данной проблемы, рекомендует удалить "снапшоты" виртуальных машин и отказаться от их дальнейшего использования.

среда, 8 мая 2013 г.

Смена пароля пользователя в терминальной сессии Windows

При работе в терминальном сеансе, через "Удаленный рабочий стол", аналогом сочетания клавиш Ctrl-Alt-Del консольного режима служит сочетание Ctrl-Alt-End. Вызвав данное служебное меню в сессии, можно сменить пароль пользователя на удаленном сервере.

Как уменьшить виртуальный диск гостевой ОС в VMware ESXi 5

Если ваш виртуальный диск SCSI интерфейса, вы можете легко его расширить с помощью GUI vSphere Client. Но разработчики в текущей версии гипервизора убрали возможность его уменьшения. Поэтому будем действовать следующим образом:
1. Первым делом необходимо освободить сокращаемое место на диске от разделов с файловой системой. Можно или удалить их, или уменьшить в размере с помощью различных утилит, например Acronis Disk Director. Это нужно сделать обязательно, иначе получите неработоспособную файловую систему ОС.
2. Теперь логинимся в консоль гипервизора или подключаемся по SSH.
3. Находим папку с файлами нашей гостевой ОС и открываем в редакторе конфигурационный файл VMDK диска:

vi vm.vmdk (если гостевая машина называется "vm")

4. В файле ищем следующую строку:

# Extent description
RW 209715200 VMFS “vm-flat.vmdk”

5. Число  209715200 означает максимальный размер виртуального диска. Рассчитывается по следующей формуле:

"RW число" = "Размер в Гб" * 1024 * 1024 * 1024 / 512

Таким образом для уменьшения размера диска со 100Гб до 20Гб изменяем число 209715200 на 41943040.

# Extent description
RW 41943040 VMFS “vm-flat.vmdk”

Для перехода в режим редактирования нажмите "i", для выхода - "Esc". Чтобы сохранить файл и выйти из редактора, наберите: ":wq".
6. После изменения конфигурационного файла нужно клонировать виртуальную машину, чтобы получить урезанный образ жесткого диска. Если отсутствует vCenter, можно клонировать только сам VMDK диск, затем удалить текущий, и еще раз клонировать, уже с корректными именами файлов, например, используя следующие команды:

vmkfstools -i vm.vmdk vm-new-size.vmdk (клонируем в новый диск)
rm vm.vmdk                                                 (удаляем файлы исходного диска)
rm vm-flat.vmdk
vmkfstools -i vm-new-size.vmdk vm.vmdk -d thin (клонируем новый диск для соответствия именования файлов ".vmdk" и с преобразованием в тонкий формат)

7. В завершении, в случае использования vmkfstools, следует переподключить виртуальный диск в настройках гостевой машины, так как он может некорректно отображать свой новый размер в vSphere Client.

понедельник, 6 мая 2013 г.

Конвертация виртуального IDE диска в SCSI в VMware ESXi 5

Виртуальные IDE диски VMware обладают существенными недостатками, они менее производительны и их нельзя расширять штатными способами. Кроме того VMware рекомендует использовать VMware Paravirtual (PVSCSI) SCSI контроллер для гостевых операционных систем, поскольку он предоставляет лучшую производительность при низких накладных расходах.

Для конвертации диска выполните следующие шаги:
1. Если гостевая система семейства Windows, убедитесь в установленных VMware tools, так как в их составе находятся драйвера Paravirtual адаптера, или в присутствии драйверов Bus logic или LSI logic типов адаптеров.
2. Выключите виртуальную машину(рекомендуется сделать бэкап в виде клона).
3. Заходим в свойства виртуальной машины("Edit Settings"), и во вкладке "Hardware" добавляем новый жесткий диск, при этом в поле "Virtual device node" обязательно выбираем SCSI.
4. Опять заходим в свойства виртуалки и меняем тип контроллера на нужный нам("SCSI Controller Type").


5. Теперь можно загрузить машину и подождать пока система установит все появившиеся новые устройства.
6. Опять выключаем виртуалку, в свойствах безвозвратно удаляем наш временный дополнительный диск("Remove from virtual machine and delete files from disk").
7. Подключаемся на консоль или по SSH к гипервизору. Командами "ls", "cd" переходим в каталог с файлами гостевой ОС.
8. Открываем файл на редактирование командой "vi имя_виртуалки.vmdk".
9. Находим строку ddb.adapterType = "ide" и меняем на ddb.adapterType = "buslogic" или ddb.adapterType = "lsilogic", в зависимости от типа выбранного адаптера SCSI(для перехода в режим редактирования нажмите "i", для выхода из режима - "Esc").
10. Сохраняемся и выходим(":wq").
11. Отключаем виртуальный диск с гостевой ОС, НО без удаления файлов("Remove from virtual machine")!!!!


12. Добавляем этот же диск заново, выбирая в визарде "Use an existing virtual disk". Теперь он отобразится как SCSI диск.


13. Еще раз заходим в свойства и меняем тип у только что появившегося контроллера на нужный нам("SCSI Controller Type").
14. Так же стоит поменять для CD-ROM устройства его "Virtual Device Node" на IDE(0:0), если он имеет другое значение(при опции, затемненной серым, стоит переподключить привод). Соответственно, для нашего жесткого диска, "Virtual Device Node" должен быть SCSI(0:0).
 15. Включаем гостевую машину. После удачной загрузки, нескольких контрольных перезагрузок и проверки корректности установленных драйверов устройств, можно очистить сделанные клоны-бэкапы.

Таким образом, в итоге, мы получили повышение производительности дисковой подсистемы и возможность её расширения.

четверг, 2 мая 2013 г.

Конвертация дисков виртуальных машин VMware ESXi 5: толстый в тонкий или тонкий в толстый

При создании новой виртуальной машины в гипервизоре VMware ESXi можно выбрать следующие варианты организации жесткого диска:
Thin Provision -"тонкий" диск, изначально не занимает на файловой системе VMFS места, разрастается до максимального размера по мере накопления информации.
Thick Provision Lazy Zeroed - "толстый" диск, резервирует свое максимальное пространство на VMFS сразу же при создании.
Thick Provision Eager Zeroed - тоже самое что и Thick Provision Lazy Zeroed, только в момент создания все пространство заполняется нулями, это замедляет процесс инсталляции но повышает производительность диска в эксплуатации.

Способы конвертации диска через GUI vSphere Client:
1. Толстый в тонкий(THICK to THIN) - при наличии "Storage VMotion", во время миграции на другой datastore можно в окне мастера поменять формат виртуального диска. Т.е. мигрируем туда и обратно. Либо, при отсутствии "Storage VMotion", клонируем виртуальную машину под другим именем и с изменением формата диска.



2. Тонкий в толстый(THIN to THICK) - также подойдет первый способ, но кроме него можно кликнуть правой кнопкой в окне "Datastore Browser" на соответствующем файле формата ".vmdk", и выбрать в контекстном меню команду "Inflate".



Способы конвертации диска используя консоль ESXi сервера или подключение по SSH:
 1. Толстый в тонкий(THICK to THIN) - используя консоль, переходим в каталог с файлами виртуальной машины и выполняем команду:

vmkfstools -K vm1.vmdk  (вместо -K можно использовать --punchzero)

В этом случае файл виртуального диска называется vm1.vmdk. Чтобы не ошибиться с выбором файла, его имя нужно уточнить в свойствах виртуальной машины("Edit Settings"), закладка "Hardware". Кликните на жесткий диск, и в поле "Disk File" будет указан путь к необходимому файлу ".vmdk".


2. Тонкий в толстый(THIN to THICK) - также как и в первом пункте, только используя другой параметр:

 vmkfstools -j vm1.vmdk  (вместо -j можно использовать --inflatedisk)

 Нужно помнить, что при копировании виртуальной машины на файловую систему, отличную от VMFS, любой диск будет преобразован в толстый и займет свой максимальный объём.