OSD: Запрос имени компьютера

Скорее всего многие уже читали на сайте itband.ru статью от Алексея Тараненко об именовании компьютеров. И многие уже используют кто что нашел — MDT 2010 с модифицированным загрузочным образом, всяческие скрипты, либо просто добавляет переменную OSDComputerName для коллекции All Unknown Computers. Если честно, то ниодно решение из существовавших на тот момент меня не устраивали, в результате чего была написана довольно простая форма для ввода имени компьютера. По сути, это порезанная веб форма из MDT 2010 и также, как и в MDT 2010 загрузочный образ должен поддерживать запуск HTA приложений. Рекомендую запускать ее не раньше шага ‘Patitioning Disk 0’, т.к. последовательность задач может завершиться с ошибкой при попытке загрузить приложение локально.

PromptSystemName.HTA:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<!--

' // ***************************************************************************
' //
' // Prompt System Name HTA OSD Task Sequence for Unknown Computers
' //
' // ***************************************************************************

-->

<title>Please type computer name here</title>

<HTA:APPLICATION ID="oHTA"
SCROLL="no"
SELECTION="no"
INNERBORDER="no"
BORDER="normal"
SINGLEINSTANCE="no"
SYSMENU="yes"
MAXIMIZEBUTTON="no"
MINIMIZEBUTTON="no"
RESIZEABLE="no"
/>

<style type="text/css">
H1 {font-size: 14pt; color: #1370AB;}
.Maintext {font-size: 10pt; color: #333333;}
.ErrMsg {color: red;background-color: #ffff80; display: none;}
.Larger {font-size: 12pt;}
</style>

<script language="vbscript">

Set oTaskSequence = CreateObject ("Microsoft.SMS.TSEnvironment")
 sTSMachineName = ucase(oTaskSequence("_SMSTSMachineName"))
If left(sTSMachineName,6) <> "MININT" then
 if sTSMachineName <> "MINWINPC" then window.Close
end if
 intwinhsize = 380
 intwinlsize = 420
 intHorizontal = 800
 intVertical = 600
 intLeft = (intHorizontal - intwinlsize) / 2
 intTop = (intVertical - intwinhsize) / 2
 window.resizeTo intwinlsize,intwinhsize
 window.moveTo intLeft, intTop

Set ProgressUI = CreateObject("Microsoft.SMS.TsProgressUI")
 ProgressUI.CloseProgressDialog

Function ValidateComputerName

If Len(ComputerName.value) > 15 then
 InvalidChar.style.display = "none"
 TooLong.style.display = "inline"
 NoName.style.display = "none"
 ValidateComputerName = false
 ButtonNext.disabled = true
ElseIf Len(ComputerName.value) = 0 then
 InvalidChar.style.display = "none"
 TooLong.style.display = "none"
 NoName.style.display = "inline"
 ValidateComputerName = false
 ButtonNext.disabled = true
ElseIf IsValidComputerName (ComputerName.Value) then
 ValidateComputerName = TRUE
 InvalidChar.style.display = "none"
 NoName.style.display = "none"
 TooLong.style.display = "none"
 ButtonNext.disabled = false
Else InvalidChar.style.display = "inline"
 TooLong.style.display = "none"
 ValidateComputerName = false
 NoName.style.display = "none"
 ButtonNext.disabled = true
End If

End function

Function IsValidComputerName (ComputerName)
 Dim regEx
 Set regEx = New RegExp
 regEx.Pattern = "[^a-zA-Z0-9\-\_]"
 IsValidComputerName = not regEx.Test (ComputerName) and len(ComputerName) <= 15
End function

sub ButtonFinishClick
 if buttonNext.Disabled then
 exit sub
 else
 oTaskSequence("OSDComputerName") = UCase(document.all.ComputerName.value)
 Window.Close
 end if
end sub

sub ButtonCancelClick
 If Msgbox("Are you sure you want to cancel?",4,"Cancel wizard?") = vbYES Then
 window.Close
 end If
end sub

sub onload
 document.all.ComputerName.value = sTSMachineName
 document.all.ComputerName.focus
 document.all.ComputerName.select
end sub

sub KeyHandler
 if window.event.KeyCode = 27 then
 ButtonCancelClick
 elseif window.event.KeyCode = 13 then
 ButtonFinishClick
 end if
end sub

</script>
</head>

<body onload=onload onkeydown="KeyHandler">
<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
 <tr>
 <td>
 <H1>Configure the computer name</H1>
 <span>

<p>Choose a name for your PC that will help you identify it on your network, if you have one. Each computer on your network must have a unique name.</p>
 <P>You can name your computer based on its owner or location, for example "DAVID" or "XYZLAB123." In order
 for your computer to appear on a network, its name cannot be longer than 15 characters or contain any
 spaces or characters aside from the numbers 0-9, the letters A-Z and a-z, and hyphens.</P>

<p><span>Computer n<u>a</u>me:</span>
 <input type=text id=ComputerName name=ComputerName size=15 language=vbscript onpropertychange=ValidateComputerName AccessKey=A /></p>
 <p>&nbsp;
 <label id=NoName>* Required (MISSING)</label>
 <label id=InvalidChar>Letters, Numbers & Dashes only!</label>
 <label id=TooLong>Maximum of 15 characters!</label>
 </p>
 </td>
 </tr>
 <tr>
 <td class="CommandArea" id="RightWizardButtons" align="right">
 <button accesskey=N id=buttonNext onclick=ButtonFinishClick language=vbscript>Fi<U>n</U>ish</button>
 <button accesskey=C id=buttonCancel onclick=ButtonCancelClick language=vbscript><U>C</U>ancel</button>
 </td>
 </tr>
</table>
</body>
</html>

Реклама

Детали bobgreen84
System Center Products Specialist

4 Responses to OSD: Запрос имени компьютера

  1. PUNK says:

    А чем OSDComputerName не устраивает?

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: