Tuesday, March 3, 2015

Prompt computer name OSD Task Sequence

Every organization is different the way they name their devices.
One of my client had a requirement of a OSD computer name prompt to use in OSD task sequence. The requirements were;
     - Prompt for machine name
     - OSD Name should not be accepting certain characters
     - OSD name should not accept empty value
     - The length should be higher than 5 and less then 12
     - The script should change the input values to uppercase if a technician typed lower case.

The following OSD Computer name script will accommodate above requirements.
This is not my own script, however i have used the base script from internet and changed it as per the requirements.

'Prompt for Computer name

 Dim env, objRegEx
 Dim Matches, Match
 Dim strPattern, strInputBox, strReason
 Dim boolLength, boolValid

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

Set env = CreateObject("Microsoft.SMS.TSEnvironment")
Set objRegEx = New RegExp

 'Define valid patterns as and character not in (a-z, A-Z, 0-9, or -)
 strPattern = "[^a-zA-Z0-9-]"

  strReason = ""
  strInputBox = InputBox("Enter desired machine name." & VbCrLf & VbCrLf & "Machine names must be 6-12 characters, and include a-z, 0-9, - ONLY.","Machine Name")
  If strInputBox = "" Then
  strReason = strReason & "Machine name must NOT be empty." & VbCrLf & VbCrLf
  boolLength = False
  End If
  ' Check length - must be 6 - 12 characters length.
  If Len(strInputBox) <= 12 and Len(strInputBox) >= 6 Then
   boolLength = True
   strReason = strReason & "Machine name must be 6 to 12 characters in length." & VbCrLf
   boolLength = False
  End If
  ' Check character validity
  boolValid = True
  ' Return all matches for invalid characters
  objRegEx.Global = True
  objRegEx.Pattern = strPattern
  ' Generate collection of matches
  Set Matches = objRegEx.Execute(strInputBox)
  ' Check for matches on invalid characters
  For Each Match In Matches
   strReason = strReason & "Invalid character """ & Match.Value & """ found. Please use only a-z, A-Z, 0-9, and -." & VbCrLf
   boolValid = False
  If Not (boolLength And boolValid) Then MsgBox "Invalid name """ & strInputBox & """ entered!" & VbCrLf & VbCrLf & strReason,vbCritical+vbOKOnly,"Invalid Name Entered"
 Loop While Not (boolLength And boolValid)
 MsgBox "Computer name set to " & UCase(strInputBox) & ".",vbInformation+vbOKOnly,"Computer Name Set"

 env("OSDComputerName") = UCase(strInputBox)

How to use OSD Computer Name prompt script in SCCM OSD task sequence:
1/ Create a package using above VBScript
2/ Open the deploy task sequence in edit mode
3/ Create a Run Command Line Step just after Restart in Windows PE step then add below command
     X:\Windows\System32\CScript.exe OSDComputerName.vbs
     Select Disable 64-bit file system redirection
     Select package and browse to the package we have created in step 1

No comments:

Post a Comment