Ahojte,
našel by se někdo, kdo by mi , prosím pomohl upravit VBS skript, aby dělal ještě něco malinko navíc, než dělá?
Mám skript, který se zeptá při instalaci na jméno počítače a pak ten text (jméno PC které zadám do messageboxu toho scriptu) vloží do souboru unattended.xml.
Respektive v tom xml najde řetězec "[Prompt]" a tento řetězec nahradí vloženým textem.
Potřeboval bych, aby ještě tento skript nahradil jiné místo ve stejném souboru (unattended.xml) a to následovně:
potřeboval bych rozlišit podle pátého znaku ze zadanéjo jména PC (xxxx
Wxxxx) pro Workstation a nebo (xxxx
Nxxxxx) pro notebooky aby nahradil text REPLACE v řádku
ou=1221_
REPLACE,OU=1000_Praha,dc=company,dc=cz
a to tak, aby pokud je na pátém místě
W, tak ou=1221_
WS,OU=1000_Praha,dc=company,dc=cz (napříkad pro počítač se jménem 1849
WAH1987)
a pokud je na pátém místě
N, tak ou=1221_
NB,OU=1000_Praha,dc=company,dc=cz (napříkad pro počítač se jménem 14WA
NLRE45)
zde je skript:
Option Explicit
Dim unattendFile, WshShell, fso, unattendFileObject, strUnattendedAll, strPos
unattendFile = "C:\Windows\Panther\unattend.xml"
Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(unattendFile) = False Then WScript.Quit
Set unattendFileObject = fso.OpenTextFile(unattendFile, 1)
strUnattendedAll = unattendFileObject.ReadAll
unattendFileObject.Close
strPos = InStr(strUnattendedAll, "[Prompt]")
If strPos > 0 Then Call Querry()
wscript.Quit
Private Sub Querry()
Dim answer, computerName, strDefName, strMsg
strDefName = "PC-"&RandomString(6)
strMsg = "Enter a computer name"
Do While answer <> vbYes
computerName = UCase(InputBox(strMsg &vbCrLf&vbCrLf&"Maximum 15 and no special characters. Name must be unique on your network.", "Computer name", strDefName))
If computerName = "" Then
computerName = strDefName
Exit Do
End If
If isValid(computerName) = True Then
answer = MsgBox("Computer name: " & computerName, vbYesNo+vbQuestion, "Verify")
Else
strMsg = "Invalid input, try again"
End If
Loop
strUnattendedAll = Replace(strUnattendedAll, "[Prompt]", computerName)
Set unattendFileObject = fso.OpenTextFile(unattendFile, 2)
unattendFileObject.Write(strUnattendedAll)
unattendFileObject.Close
WScript.Sleep 5000
WshShell.Run "%WINDIR%\System32\oobe\windeploy.exe", 0, True
End Sub
Function RandomString(ByVal strLen)
Dim str, i
Const LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
For i = 1 To strLen
Randomize
str = str & Mid( LETTERS, Int(Len( LETTERS ) * Rnd() + 1), 1 )
Next
RandomString = str
End Function
Function isValid(ByVal strValue)
Dim objRegEx
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.IgnoreCase = True
objRegEx.Global = True
objRegEx.MultiLine = True
objRegEx.Pattern = "^[a-z0-9]+[a-z0-9-]*[a-z0-9]+$"
If Len(strValue) > 15 Then
isValid = False
Else
isValid = objRegEx.test(strValue)
End If
End Function
Děkuji moc za jakoukoliv pomoc či radu