четверг, 25 июля 2013 г.

vbs. Запуск msi + ярлык на рабочий стол. Ставим Graphviz.


Тонкость только в том, что в сети 2 типа клиентских операционных систем.

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "msiexec.exe /I graphviz-2.30.1.msi /passive /qn"

sOSType = Trim(WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion"))
If sOSType = "5.1" Then
strDesktop = WshShell.SpecialFolders("AllUsersDesktop")
Set oMyShortCut= WshShell.CreateShortcut(strDesktop & "\graphviz.lnk")
oMyShortCut.TargetPath = "C:\Program Files\Graphviz2.30\bin\gvedit.exe"
oMyShortCut.WorkingDirectory = "C:\program Files\Graphviz2.30\bin"
oMyShortCut.Description = "[GraphViz]"
oMyShortCut.Save
ELSE
strDesktop = WshShell.SpecialFolders("AllUsersDesktop")
Set oMyShortCut= WshShell.CreateShortcut(strDesktop & "\graphviz.lnk")
oMyShortCut.TargetPath = "C:\program Files (x86)\Graphviz2.30\bin\gvedit.exe"
oMyShortCut.WorkingDirectory = "C:\program Files (x86)\Graphviz2.30\bin"
oMyShortCut.Description = "[GraphViz]"
oMyShortCut.Save
End IF

среда, 17 июля 2013 г.

WSUS. Удаляем $NtUninstall старше 90 дней.

понадобятся
freeware конвертер vbs в exe  (не обязательно наверное, но я люблю, когда юзеры не догадываются, что я есть :), использую параметры  "консольное" и "скрыть от пользователя")
Собственно сам скрипт (спасибо автору)
на всякий продублирую мой окончательный вариант: убраны сообщения пользователю и вставлено сравнение дат и версии ОС (будут отрабатывать только на XP и 2003)


Set oShell = CreateObject("WScript.Shell")

sOSType = Trim(oShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion")) 
If (sOSType = "5.1") OR (sOSType = "5.2") Then 

Set oFSO = CreateObject("Scripting.FileSystemObject")
sWinDir = oFSO.GetSpecialFolder(0)
Set oFolder = oFSO.GetFolder(sWinDir)
Set oDictionary = CreateObject("Scripting.Dictionary")
For Each oSubFolder In oFolder.SubFolders
IF oSubFolder.DateCreated < Now() - 90 then
sFolderName = LCase(oSubFolder.Name)
sFolderPath = LCase(oSubFolder.Path)
If Left(sFolderName, 13) = "$ntuninstallq" _
Or Left(sFolderName, 14) = "$ntuninstallkb" Then
' Get the update name for the registry delete:
sUpdateName = Mid(sFolderName, 13, Len(sFolderName) - 13)
' Never delete folders/files while enumerating a file/folder collection.
' Adds them to a dictionary object for later handling instead:
oDictionary.Add sUpdateName, sFolderPath
End If
End if
Next
sDeleted = ""
For Each sUpdateName In oDictionary.Keys
sDeleted = sDeleted & vbCrLf & sUpdateName
sFolderPath = oDictionary.Item(sUpdateName)
On Error Resume Next
' Remove entry in Add/Remove Programs:
oShell.RegDelete "HKLM\SOFTWARE\Microsoft\Windows\" _
& "CurrentVersion\Uninstall\" & sUpdateName & "\"
On Error Goto 0
' Delete the unisntall folder:
oShell.Run "%Comspec% /C RD /S /Q " _
& Chr(34) & sFolderPath & Chr(34), 0, True
Next
End if

Готовый exe распространяем любимым способом:
Сначала была идея повесить людям в планировщик (автоматически ест-но) - отказалась - нет возможности отследить общую картину. Использую бонусы Касперского: Создаем новую групповую задачу 


- и получаем красивый результат:


Все. 

вторник, 16 июля 2013 г.

WSUS. Принудительное обновление серверов по расписанию. (не через GPO)

задача.
защитить предприятие от косяков Microsoft. устанавливать обновления по расписанию: я для себя разработала такое :
понедельник - тестовая среда ( должны присутствовать все OC предприятия)
вторник - чай
среда - наименее значимый  виртуальный сервер (падение которого заметят все, но и восстановить можно быстро) - например прокси или один из узлов кластера.
четверг - все остальные виртуалки (кроме самого wsus)
пятница - вся физика (кроме backup)
суббота - backup
воскресенье - wsus
решение.
- в GPO  - автоматически загружать и спросить пользователяна об устаноке
далее
- 2008R2 - cmd  в планировщике
                  wuauclt.exe /updatenow                
- 2003 - скрипт vbs отсюда http://duncanbowring.wordpress.com/2013/03/22/install-and-download-your-approved-or-downloaded-wsus-updates/
тонкости:
работает "прозрачно" - не появляется надпись "идет установка обновлений" - долго ждем...
запускать из планировщика через cscript.exe  "путь\файл.vbs"
содержание :
' Automatically install approved updates from WSUS and reboot
' *** check
Set objUpdateSession = CreateObject("Microsoft.Update.Session")
Set objUpdateSearch = objUpdateSession.CreateupdateSearcher()
objUpdateSearch.ServerSelection = 0 'use system default
Set objUpdateSearchResult = objUpdateSearch.Search("IsInstalled=0 and Type='Software'")
For I = 0 To objUpdateSearchResult.Updates.Count-1
Set objUpdate = objUpdateSearchResult.Updates.Item(I)
'WScript.Echo I + 1 & "> " & objUpdate.Title
Next
If objUpdateSearchResult.Updates.Count = 0 Then WScript.Quit 'wscript.echo "no updates"
' *** download
Set objUpdatesDownload = CreateObject("Microsoft.Update.UpdateColl")
For I = 0 to objUpdateSearchResult.Updates.Count-1
Set objUpdate = objUpdateSearchResult.Updates.Item(I)
boolAddThisUpdate = false
If Not objUpdate.InstallationBehavior.CanRequestUserInput = true Then
If objUpdate.EulaAccepted = false Then
objUpdate.AcceptEula()
boolAddThisUpdate = true
Else
boolAddThisUpdate = true
end if
End If
If boolAddThisUpdate = true Then objUpdatesDownload.Add(objUpdate)
Next
If objUpdatesDownload.Count = 0 Then WScript.Quit
Set objUpdateDownloader = objUpdateSession.CreateUpdateDownloader()
objUpdateDownloader.Updates = objUpdatesDownload
objUpdateDownloader.Download()
' *** install
Set objUpdatesInstall = CreateObject("Microsoft.Update.UpdateColl")
For I = 0 To objUpdateSearchResult.Updates.Count-1
set objUpdate = objUpdateSearchResult.Updates.Item(I)
'    WScript.Echo I + 1 & "> " & objUpdate.Title
If objUpdate.IsDownloaded = true Then objUpdatesInstall.Add(objUpdate)
Next
if objUpdatesInstall.Count = 0 then wscript.quit
Set objUpdateInstaller = objUpdateSession.CreateUpdateInstaller()
objUpdateInstaller.Updates = objUpdatesInstall
Set objInstallationResult = objUpdateInstaller.Install()
' *** restart
Set objShell = CreateObject("WScript.Shell")
objShell.Run "shutdown.exe -r -t 0"

(я закомментировала последние 2 строки и перезагружаю по другому расписанию)

PS себе:  в будущем унифицировать задачу под обе операционки через PowerShell

среда, 3 июля 2013 г.

CNP410S + HP 1160 + W2k3

имеем: Windows 2003 r2 x64   в качестве сервера печати
задача: прикрутить к нему CNP410S (c подключенным к нему hp1160)
изюминка:  добавить - локальный - новый порт - стандарт TCP/IP - Network printserver(1 port) -далее по стандартной схему прикрутить драйвер
подходящий тип порта вычислен методом перебора

вторник, 2 июля 2013 г.

tp-link 310U + hp p2055 + windows 2003 r2 x64

исходные данные: сервера печати в NLB-кластере на Windows 2003 x64
задача прикрутить hp P2055 через tp-link 310U
решение.

Первый этап

  1. установить MFP and Storage Server (в комплекте с tp-link 310U) см. картинку ниже
  2. настроить свой IP для принт-сервера (пкм - установка сервера )
  3. узнать имя очереди печати принтера  (пкм на принтере - параметры устройсктва - имя очереди - выписать на бумажку)


Второй этап (Стандартная установка принтера.)
  1. Принтеры - Установка принтера - Локальный
  2. Новый порт - Стандартный TCP/IP 
  3. Цепляем драйвер (натравить на папку - установка через фирменный инсталлятор не прокатит - напишет операционная система не поддерживается)
  4. Теперь выбираем из списка серверов установленный принтер - свойства - порт - свойства - меняем на LPR  и указываем имя очереди из первого этапа.
Минус. MFP sorage server должен всегда висеть в трее.

Подробно расписано здесь  http://www.tplink.com/ua/article/?faqid=222

    .