Tentando renomear um computador através do comando netdom e forçar uma reinicialização

1

Por que isso não funciona? parece que vai, mas nada acontece.

Option Explicit

Dim wshNetwork
Dim wshShell
Dim PCname
Dim Newname

Set wshNetwork = WScript.CreateObject("WScript.Network")
Set wshShell = WScript.CreateObject("WScript.Shell")

PCname = InputBox("Type in the name of the pc you want to rename")
Newname = InputBox("Type in the name of the new pc name")

wshShell.run("netdom renamecomputer " &PCname& " /NewName:"&Newname& " /reboot:00 " )
'MsgBox("netdom renamecomputer " &PCname& " /NewName:"&Newname& " /reboot:00 /y")
    
por MadHatter 13.10.2010 / 17:29

3 respostas

1

Encontrei isso antes e enquanto sei como fazer isso por meio do PowerShell, você pode tentar isso se estiver procurando por VBS.

Extraído do link

OPTION EXPLICIT
CONST adOpenStatic = 3
CONST adLockOptimistic = 3
CONST adCmdText = &H0001
CONST intWindowStyle = 7
CONST blnWait = TRUE
DIM strCSVFolder,strCSVFile,strNetDomParams
DIM objShell,cn,rs

' ************** Setup ************** 
' Folder where CSV File is located
' CSV file should have 1st field = oldname, 2nd field = newname with no header row
strCSVFolder = "C:\Temp\"
' CSV filename
strCSVFile = "test.csv"
' Additional parameters to pass to NetDom command
strNetDomParams = " /userd:DOMAIN\ADMINISTRATOR /passwordd:PASSWORD /usero:DOMAIN\ADMINISTRATOR /passwordo:PASSWORD /force "

'************************************ 

SET objShell = wscript.CREATEOBJECT("wscript.shell")

' Setup ADO Connection to CSV file
SET cn = CREATEOBJECT("ADODB.Connection")
SET rs = CREATEOBJECT("ADODB.Recordset")

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=" & strCSVFolder & ";" & _
          "Extended Properties=""text;HDR=NO;FMT=Delimited"""

rs.Open "SELECT * FROM [" & strCSVFile & "]", _
          cn, adOpenStatic, adLockOptimistic, adCmdText

DO until rs.eof
    DIM strOldName, strNewName, strCmd,intReturn
    strOldName = rs(0)
    strNewName = rs(1)
    strCmd = "cmd.exe /C netdom renamecomputer " & strOldName & " /newname:" & strNewName & strNetDomParams

    intReturn = objShell.Run(strCmd,intWindowStyle,blnWait)

    IF intReturn = 0 THEN
        wscript.echo "Renamed '" & strOldName & "' to '" & strNewName & "'"
    ELSE
        wscript.echo "Error renaming '" & strOldName & "' to '" & strNewName & "'" 
    END IF

    rs.movenext
LOOP
    
por 13.10.2010 / 17:32
0

Descender para a linha do cmd é sempre uma dor (mais você precisa ter certeza de que a netdom está lá), lidar com citações no VB e quais não.

Provavelmente, é mais fácil ir nativo e usar o WMI e, como bônus, deve funcionar mais em qualquer lugar. Isto irá juntar-se a um domínio também (você pode remover essa parte), mas você pode simplesmente deixar a parte renomear e a parte de reinicialização e você deve ser bom.

Este é um código não testado que tirei de outro site.

Const JOIN_DOMAIN = 1
Const ACCT_CREATE = 2

Dim sCmpName
Dim sUser, sPassword, sDomain, sOU

sUser = "<domainuserid>"
sPassword = "<domainpassword>"
sDomain = "<mydomain>"
sOU = "<ou=myou,dc=mydomain,dc=com>"

sCmpName = InputBox("Enter the new computer name:", "Computer Name")
If sCmpName = "" Then
  Wscript.Echo "Exiting script."
  Wscript.Quit
End If

Dim oWMI, oCmp, oOS, sReturn

Set oWMI = GetObject("winmgmts:\.\root\cimv2")
For Each oCmp in oWMI.InstancesOf("Win32_ComputerSystem")
  sReturn = oCmp.Rename(sCmpName)
  If sReturn <> 0 Then
    Wscript.Echo "Rename failed.  Error = " & Err.Number & _
      vbcrlf & "Exiting script."
  Else
    Wscript.Echo "Rename successful."
    sReturn = oCmp.JoinDomainOrWorkgroup(sDomain, sPassword, _ 
      sDomain & "\" & sUser, sOU, JOIN_DOMAIN+ACCT_CREATE)
    If sReturn <> 0 Then
      Wscript.Echo "Join domain failed.  Error = " & Err.Number & _
        vbcrlf & "Exiting script."
Else
  Wscript.Echo "Join domain successful."
End If
Wscript.Echo "Rebooting computer..."
For Each oOS in oWMI.InstancesOf("Win32_OperatingSystem")
  sReturn = oOS.Reboot
Next
End If
Next
    
por 13.10.2010 / 19:17
0

se você tentar implantar uma imagem de VM: Você já tentou executar sysprep ^ ( 1 )? Isso também força (até onde eu sei) o sistema a redefinir informações do SID evitando problemas do WSUS e assim por diante!?

    
por 30.11.2012 / 14:29