Inserir variável fornecida do lote no arquivo xml existente

0

Aqui está o que eu estou tentando realizar ... se isso puder ser feito apenas com o lote ... por enquanto?

Em vez de realmente renomear o cliente aqui da instrução netdom, quero INSERTAR a variável% strComputer% em um arquivo xml ou pelo menos substituir o texto com essa mesma variável. O arquivo xml será um arquivo unattend.xml usado para o SysPrepping em um cliente Windows 7.

Esta é a seção que gostaria de modificar:

% strComputername%

Em essência, a instrução insert_name seria para o novo nome a ser inserido no arquivo xml vice do comando netdom.exe.

O código postado funciona muito bem no meu processo de nomeação automática! As etapas descrevem como o script funciona.

Por favor, preste atenção nas declarações for / f e no rótulo: insert_name. Tudo o mais pode ser desconsiderado.

  1. Recupera o endereço MAC usando o WMIC
  2. Compara esse endereço MAC com o arquivo pdqmac2pcname.txt para uma correspondência de endereço MAC ou incompatibilidade.
  3. Quando o endereço MAC corresponde, o nome é canalizado para a instrução netdom como a variável newname% strComputername%
  4. o script irá para o insert_name e
  5. Se o endereço MAC for encontrado com um nome de computador, o script vai para o rótulo kill_autologon para forçar o computador a não fazer logon automático. Esse procedimento impede que um computador renomeado incorretamente seja associado ao domínio com um nome gerado aleatoriamente pelo SysPreped.
  6. Se o nome não for encontrado ou o endereço MAC não corresponder, o computador não ingressará no domínio e
  7. o computador é reinicializado na tela de login para que possa ser renomeado manualmente e ingressado no domínio.
setlocal enabledelayedexpansion


FOR /F "skip=1 tokens=*" %%I IN ('WMIC Path Win32_NetworkAdapter Where "NetConnectionID='Local Area Connection'" Get MACAddress') DO IF NOT DEFINED MACAddress SET MACAddress=%%I
    FOR /F "usebackq delims=, tokens=1,2" %%J IN ('type C:\rename_computer\pdqmac2pcname.txt') DO IF %MACAddress% EQU %%J SET strComputername=%%K && GOTO insert_name
)

goto kill_autologon


:insert_name
C:\windows\system32\netdom.exe renamecomputer %COMPUTERNAME% /NewName:%strComputername% /FORCE

goto shutdown


:kill_autologon
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoLogonCount /f

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d 0 /f


:shutdown
shutdown -r -t 0


exit
    
por Terrence 28.04.2013 / 02:44

1 resposta

0

Primeiro, a expansão habilitada é feita com!, não com% Então! Var! em vez de% var%

Se esse XML é conhecido por ser consistente, tudo que você precisa fazer é dividi-lo e juntá-lo mais tarde com os bits ausentes:

xml
blá blá
strComputername
blá blá
/ xml

Divida assim:

file1:
xml
blah blahEOL

file3:
blá blá
/ xml

não coloque strComputername no arquivo2 e faça uma mesclagem binária: cópia / b arquivo1 + arquivo2 + arquivo3 unattend.xml

Note que cada arquivo terá um EOL, basicamente no arquivo2 você terá que colocar toda a linha xml que contém strComputername.

Doável?

    
por 28.04.2013 / 05:01