Pomoc s VBS skriptem

...

Moderátor: Mods_senior

wolfie
nováček
Příspěvky: 3
Registrován: květen 22
Pohlaví: Nespecifikováno
Stav:
Offline

Pomoc s VBS skriptem

Příspěvekod wolfie » 12 kvě 2022 23:12

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 (xxxxWxxxx) pro Workstation a nebo (xxxxNxxxxx) 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 1849WAH1987)

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 14WANLRE45)


zde je skript:
  1. Option Explicit
  2. Dim unattendFile, WshShell, fso, unattendFileObject, strUnattendedAll, strPos
  3. unattendFile = "C:\Windows\Panther\unattend.xml"
  4. Set WshShell = WScript.CreateObject("WScript.Shell")
  5. Set fso = CreateObject("Scripting.FileSystemObject")
  6. If fso.FileExists(unattendFile) = False Then WScript.Quit
  7. Set unattendFileObject = fso.OpenTextFile(unattendFile, 1)
  8. strUnattendedAll = unattendFileObject.ReadAll
  9. unattendFileObject.Close
  10. strPos = InStr(strUnattendedAll, "[Prompt]")
  11. If strPos > 0 Then Call Querry()
  12. wscript.Quit
  13. Private Sub Querry()
  14.     Dim answer, computerName, strDefName, strMsg
  15.     strDefName = "PC-"&RandomString(6)
  16.     strMsg = "Enter a computer name"
  17.     Do While answer <> vbYes
  18.         computerName = UCase(InputBox(strMsg &vbCrLf&vbCrLf&"Maximum 15 and no special characters. Name must be unique on your network.", "Computer name", strDefName))
  19.         If computerName = "" Then
  20.             computerName = strDefName
  21.             Exit Do
  22.         End If
  23.         If isValid(computerName) = True Then
  24.             answer = MsgBox("Computer name: " & computerName, vbYesNo+vbQuestion, "Verify")
  25.         Else
  26.             strMsg = "Invalid input, try again"
  27.         End If
  28.     Loop
  29.     strUnattendedAll = Replace(strUnattendedAll, "[Prompt]", computerName)
  30.     Set unattendFileObject = fso.OpenTextFile(unattendFile, 2)
  31.     unattendFileObject.Write(strUnattendedAll)
  32.     unattendFileObject.Close
  33.     WScript.Sleep 5000
  34.     WshShell.Run "%WINDIR%\System32\oobe\windeploy.exe", 0, True
  35. End Sub
  36. Function RandomString(ByVal strLen)
  37.     Dim str, i
  38.     Const LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
  39.     For i = 1 To strLen
  40.         Randomize
  41.         str = str & Mid( LETTERS, Int(Len( LETTERS ) * Rnd() + 1), 1 )
  42.     Next
  43.     RandomString = str
  44. End Function
  45. Function isValid(ByVal strValue)
  46.     Dim objRegEx
  47.     Set objRegEx = CreateObject("VBScript.RegExp")
  48.     objRegEx.IgnoreCase = True
  49.     objRegEx.Global = True
  50.     objRegEx.MultiLine = True
  51.     objRegEx.Pattern = "^[a-z0-9]+[a-z0-9-]*[a-z0-9]+$"
  52.     If Len(strValue) > 15 Then
  53.         isValid = False
  54.     Else
  55.         isValid = objRegEx.test(strValue)
  56.     End If
  57. End Function


Děkuji moc za jakoukoliv pomoc či radu

Reklama
Uživatelský avatar
ITCrowd
Tvůrce článků
Guru Level 13.5
Guru Level 13.5
Příspěvky: 23591
Registrován: březen 10
Pohlaví: Muž
Stav:
Offline

Re: Pomoc s VBS skriptem

Příspěvekod ITCrowd » 13 kvě 2022 01:00

Vítej na PC-HELP!
1. píšeš soubor (unattended.xml), ale v kódu vidím unattend.xml.
2. byl by k dispozici i ten soubor unattend? Musím ho zkontrolovat, zda se tam někde neobjevuje ou v některém slově, pak by to hledání nemuselo dopadnout dobře... A taky to musím na něčem vyzkoušet.
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router

wolfie
nováček
Příspěvky: 3
Registrován: květen 22
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Pomoc s VBS skriptem

Příspěvekod wolfie » 13 kvě 2022 08:10

Ahoj

děkuji za reakci. Skript přikládám, jedná se o unattend.xml, to unattended byl můj překlep, za což se omlouvám.
jedná se o řádek č. 69, <MachineObjectOU>ou=1221_REPLACE,OU=1000_Praha,dc=company,dc=cz</MachineObjectOU>

ale klidně by celý tento řádek tam vůbec nemusel být a místo toho by na tom řádku mohlo být třeba jen "REPLACEME" a to by se pak mohlo nahradit tím vbs skriptem buď za
<MachineObjectOU>ou=1221_WS,OU=1000_Praha,dc=company,dc=cz</MachineObjectOU>
nebo
<MachineObjectOU>ou=1221_NB,OU=1000_Praha,dc=company,dc=cz</MachineObjectOU>

Děkuji moc!
Code: [Vybrat vše] [Zobrazit/Skrýt] [Download] (Bez_jmena.html)
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <unattend xmlns="urn:schemas-microsoft-com:unattend">
  3.     <settings pass="oobeSystem">
  4.         <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  5.             <InputLocale>0405:00000405</InputLocale>
  6.             <SystemLocale>cs-CZ</SystemLocale>
  7.             <UILanguage>cs-CZ</UILanguage>
  8.             <UILanguageFallback>cs-CZ</UILanguageFallback>
  9.             <UserLocale>cs-CZ</UserLocale>
  10.         </component>
  11.         <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  12.             <TimeZone>Central Europe Standard Time</TimeZone>
  13.             <AutoLogon>
  14.                 <Domain>southsro</Domain>
  15.                 <Enabled>true</Enabled>
  16.                 <LogonCount>3</LogonCount>
  17.                 <Username>admin.south</Username>
  18.                 </AutoLogon>
  19.             <OOBE>
  20.                 <HideEULAPage>true</HideEULAPage>
  21.                 <HideLocalAccountScreen>true</HideLocalAccountScreen>
  22.                 <HideOnlineAccountScreens>true</HideOnlineAccountScreens>
  23.                 <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
  24.                 <NetworkLocation>Work</NetworkLocation>
  25.                 <ProtectYourPC>3</ProtectYourPC>
  26.                 <SkipMachineOOBE>true</SkipMachineOOBE>
  27.                 <SkipUserOOBE>true</SkipUserOOBE>
  28.             </OOBE>
  29.             <UserAccounts>
  30.                 <DomainAccounts>
  31.                     <DomainAccountList wcm:action="add">
  32.                         <Domain>southsro</Domain>
  33.                         <DomainAccount wcm:action="add">
  34.                             <Group>Users</Group>
  35.                             <Name>Domain Users</Name>
  36.                         </DomainAccount>
  37.                     </DomainAccountList>
  38.                 </DomainAccounts>
  39.                 <LocalAccounts>
  40.                     <LocalAccount wcm:action="add">
  41.                     <Description>Local Admin</Description>
  42.                         <DisplayName>Local Admin</DisplayName>
  43.                         <Group>Administrators</Group>
  44.                         <Name>local.admin</Name>
  45.                         </LocalAccount>
  46.                 </LocalAccounts>
  47.             </UserAccounts>
  48.         </component>
  49.     </settings>
  50.     <settings pass="specialize">
  51.         <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  52.             <RunSynchronous>
  53.                 <RunSynchronousCommand wcm:action="add">
  54.                     <Order>1</Order>
  55.                     <Path>%WINDIR%\Setup\Scripts\SetupComplete.cmd</Path>
  56.                     <WillReboot>Never</WillReboot>
  57.                 </RunSynchronousCommand>
  58.             </RunSynchronous>
  59.         </component>
  60.         <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  61.             <SkipAutoActivation>true</SkipAutoActivation>
  62.         </component>
  63.         <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  64.             <ComputerName>[Prompt]</ComputerName>
  65.         </component>
  66.         <component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  67.             <Identification>
  68.                 <JoinDomain>southsro</JoinDomain>
  69.                 <MachineObjectOU>ou=1221_REPLACE,OU=1000_Praha,dc=company,dc=cz</MachineObjectOU>              
  70.                 <TimeoutPeriodInMinutes>5</TimeoutPeriodInMinutes>
  71.                 <UnsecureJoin>false</UnsecureJoin>
  72.                 <Credentials>
  73.                     <Domain>southsro</Domain>
  74.                     <Username>south.admin</Username>
  75.                 </Credentials>
  76.             </Identification>
  77.         </component>
  78.     </settings>
  79.     <settings pass="windowsPE">
  80.         <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  81.             <InputLocale>0405:00000405</InputLocale>
  82.             <SystemLocale>cs-CZ</SystemLocale>
  83.             <UILanguage>cs-CZ</UILanguage>
  84.             <UILanguageFallback>cs-CZ</UILanguageFallback>
  85.             <UserLocale>cs-CZ</UserLocale>
  86.             <SetupUILanguage>
  87.                 <UILanguage>cs-CZ</UILanguage>
  88.             </SetupUILanguage>
  89.         </component>
  90.         <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  91.             <Diagnostics>
  92.                 <OptIn>false</OptIn>
  93.             </Diagnostics>
  94.             <DynamicUpdate>
  95.                 <WillShowUI>OnError</WillShowUI>
  96.             </DynamicUpdate>
  97.             <ImageInstall>
  98.                 <OSImage>
  99.                     <WillShowUI>OnError</WillShowUI>
  100.                     <InstallFrom>
  101.                         <MetaData wcm:action="add">
  102.                             <Key>/IMAGE/INDEX</Key>
  103.                             <Value>1</Value>
  104.                         </MetaData>
  105.                     </InstallFrom>
  106.                 </OSImage>
  107.             </ImageInstall>
  108.             <UserData>
  109.                 <AcceptEula>true</AcceptEula>
  110.                 <ProductKey>
  111.                     <Key></Key>
  112.                 </ProductKey>
  113.             </UserData>
  114.         </component>
  115.     </settings>
  116. </unattend>

Uživatelský avatar
ITCrowd
Tvůrce článků
Guru Level 13.5
Guru Level 13.5
Příspěvky: 23591
Registrován: březen 10
Pohlaví: Muž
Stav:
Offline

Re: Pomoc s VBS skriptem

Příspěvekod ITCrowd » 13 kvě 2022 19:42

Ahoj,
ve skriptu doplň mezi řádky 30 a 31 toto:

Kód: Vybrat vše

        If Mid(computerName, 5, 1) = "W" Then strUnattendedAll = Replace(strUnattendedAll, "REPLACE", "WS")
        If Mid(computerName, 5, 1) = "N" Then strUnattendedAll = Replace(strUnattendedAll, "REPLACE", "NB")

Reaguje to pouze na pátý znak zleva. Pokud tam bude cokoli jiného, než N, nebo W, zůstává řádek tak jak byl.
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router

wolfie
nováček
Příspěvky: 3
Registrován: květen 22
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Pomoc s VBS skriptem

Příspěvekod wolfie » 21 srp 2022 20:08

Ahoj.
velmi děkuji za pomoc. Odpovídám až teď, protože jsem strávil 3 a půl měsíce v nemocnici a pustili mne před 2 dny. Tak dávám dohromady resty.
Skript funguje výborně, jen jsem se chtel zeptat, jak udělat ,aby byl vždy ONTOP?
Zkusil jsem přidat do řádky answer = MsgBox("Computer name: " & computerName, vbYesNo+vbQuestion, "Verify") tento výraz +vbSystemModal
a tak ta řádka vypadá takhle : answer = MsgBox("Computer name: " & computerName, vbYesNo+vbQuestion+vbSystemModal, "Verify")

ale bohužel to nefunguje, pří náhodném kliknutí mimo to malé okno , (které se ptá na computer name) jde toto okno do pozadí a dokude se nestiskne ALT+TAB, tak to okno není vidět.
Ještě jendou děkuji za předchozí pomoc.

Uživatelský avatar
ITCrowd
Tvůrce článků
Guru Level 13.5
Guru Level 13.5
Příspěvky: 23591
Registrován: březen 10
Pohlaví: Muž
Stav:
Offline

Re: Pomoc s VBS skriptem

Příspěvekod ITCrowd » 22 srp 2022 07:55

To, co popisuješ je standardní chování woken. A funguje to stejně u jakékoli jiné aplikace. Když si otevřeš třeba kalkulačku a klikneš místo do ní do jiné aplikace, pochopí to systém tak, že budeš pracovat s jinou aplikací a okno kalkulačky se zneaktivní, a pokud máš jinou aplikaci přes celou plochu, zaktivní se jiná aplikace a okno kalkulačky se "schová" pod tuto aplikaci. Vyvoláš ho alt+tab, nebo klikneš na ikonu v liště.
Můžeš zkusit si přímo pohrát s API: https://www.vbforums.com/showthread.php ... ays-on-Top , ale nemyslím si, že to bude fungovat tak, aby okno messageboxu bylo stále aktivní.
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Pomoc s výběrem HW
    od adelafridrichova » 13 dub 2023 20:41 » v Rady s výběrem hw a sestavením PC
    6
    2109
    od Karrex Zobrazit poslední příspěvek
    14 dub 2023 14:09
  • Pomoc se sestavením PC 45-50K
    od Kvp2 » 03 lis 2023 23:27 » v Rady s výběrem hw a sestavením PC
    22
    2624
    od Kvp2 Zobrazit poslední příspěvek
    12 lis 2023 20:39
  • Pomoc s výběrem SSD disku
    od eli125 » 25 dub 2023 12:37 » v Rady s výběrem hw a sestavením PC
    1
    1179
    od Zivan Zobrazit poslední příspěvek
    25 dub 2023 15:07
  • pomoc v oblasti grafiky
    od showpayne » 07 srp 2023 19:08 » v Vše ostatní (Off topic)
    0
    1378
    od showpayne Zobrazit poslední příspěvek
    07 srp 2023 19:08
  • Pomoc s instalací Windows Příloha(y)
    od volvo1971 » 02 zář 2023 10:00 » v Windows 11, 10, 8...
    8
    1497
    od martin.100 Zobrazit poslední příspěvek
    02 zář 2023 18:33

Zpět na “Vše ostatní (sw)”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů