Script de configuration Hyper-V Server in depth : hvconfig
Encore plus fort que Windows Server Core Configurator (cf. https://blogs.technet.com/longhorn/archive/2008/10/09/outil-de-configuration-pour-windows-server-2008-core.aspx) voici le script de configuration disponible dans Microsoft Hyper-V Server 2008.
Fabrice a trouvé la config et surtout récupéré le script sur sa machine Microsoft Hyper-V Server 2008. Good Job ;-)
La documentation https://www.microsoft.com/downloads/details.aspx?FamilyId=E1E111C9-FA69-4B4D-8963-1DD87804C04F&displaylang=en
Voici le script il est dans "%windir%\system32\en-US\hvconfig.vbs" (de là à le réutiliser pour les installations core...)
'-------------------------------------------
' Copyright (c) Microsoft Corporation. All rights reserved.
'
' Version 1.0
' hvconfig.vbs - Configuration script used to setup a Hyper-V machine for remote configuration
'
'
'-------------------------------------------
const L_Msg001_Text = "No IP address"
const L_Msg002_Text = " No IP "
const L_Msg003_Text = "No active network adapters found."
const L_Msg004_Text = "Warning"
const L_Msg005_Text = " Hyper-V Configuration"
const L_Msg006_Text = "1) Domain/Workgroup: "
const L_Msg007_Text = "2) Computer Name: "
const L_Msg008_Text = "3) Network Settings"
const L_Msg009_Text = "4) Add Local Administrator"
const L_Msg010_Text = "5) Windows Update Settings: "
const L_Msg011_Text = "6) Download and Install Updates: "
const L_Msg012_Text = "7) Remote Desktop: "
const L_Msg013_Text = "8) Regional and Language Options"
const L_Msg014_Text = "9) Date and Time"
const L_Msg015_Text = "10) Log Off User"
const L_Msg016_Text = "11) Restart Server"
const L_Msg017_Text = "12) Shut Down Server"
const L_Msg018_Text = "13) Exit to Command Line"
const L_Msg019_Text = "Enter number to select an option: "
const L_Msg020_Text = "Change Domain/Workgroup Membership"
const L_Msg021_Text = "Join (D)omain or (W)orkgroup? (Blank=Cancel) "
const L_Msg022_Text = "Domain"
const L_Msg023_Text = "Workgroup"
const L_Msg024_Text = "Machine currently joined to a domain."
const L_Msg025_Text = "Do you want to remove this computer from the current domain now?"
const L_Msg026_Text = "Specify an authorized domain\user: "
const L_Msg027_Text = "Removing computer from current domain..."
const L_Msg028_Text = "You must restart your computer to apply these changes."
const L_Msg029_Text = "Restart now?"
const L_Msg030_Text = "Restart"
const L_Msg031_Text = "Specify domain\user: "
const L_Msg032_Text = "Join Domain"
const L_Msg033_Text = "Enter new computer name (Blank=Cancel): "
const L_Msg034_Text = "Computer Name"
const L_Msg035_Text = "Changing Computer name..."
const L_Msg036_Text = "Enter account to join local Administrators group (Blank=Cancel): "
const L_Msg037_Text = "Adding to local Administrators group..."
const L_Msg038_Text = "Local Administrators Group"
const L_Msg039_Text = "User added to local Administrators group."
const L_Msg040_Text = "User not found."
const L_Msg041_Text = "User already in local Administrators group."
const L_Msg042_Text = "Failed to add user to local Administrators group."
const L_Msg043_Text = "Windows Update currently set to: "
const L_Msg044_Text = "Select (A)utomatic or (M)anual updates: "
const L_Msg045_Text = "Automatic"
const L_Msg046_Text = "System will check for and install updates every day at 3:00 AM."
const L_Msg047_Text = "Enabling Automatic updates..."
const L_Msg048_Text = "Manual"
const L_Msg049_Text = "System will never check for updates."
const L_Msg050_Text = "Disabling Automatic updates..."
const L_Msg051_Text = "Windows Update set to "
const L_Msg052_Text = "Update Settings"
const L_Msg053_Text = "(E)nable or (D)isable Remote Desktop? (Blank=Cancel) "
const L_Msg054_Text = "1) Allow only clients running Remote Desktop with Network Level Authentication (more secure)"
const L_Msg055_Text = "2) Allow clients running any version of Remote Desktop (less secure)"
const L_Msg056_Text = "Enter selection: "
const L_Msg057_Text = "Enabling Remote Desktop..."
const L_Msg058_Text = "Remote Desktop enabled for clients running any version of Remote Desktop (less secure)."
const L_Msg059_Text = "Remote Desktop"
const L_Msg060_Text = "Remote Desktop enabled for clients only running Remote Desktop with Network Level Authentication (more secure)."
const L_Msg061_Text = "Failed to disable Remote Desktop."
const L_Msg062_Text = "Disabling Remote Desktop..."
const L_Msg063_Text = "Remote Desktop disabled."
const L_Msg064_Text = "Are you sure you want to log off?"
const L_Msg065_Text = "Log Off"
const L_Msg066_Text = "Are you sure you want to restart?"
const L_Msg067_Text = "Are you sure you want to shut down?"
const L_Msg068_Text = "Shut Down"
const L_Msg069_Text = "Enabled (all clients)"
const L_Msg070_Text = "Enabled (more secure clients only)"
const L_Msg071_Text = "Disabled"
const L_Msg072_Text = "--------------------------------"
const L_Msg073_Text = " Network settings"
const L_Msg074_Text = "Available Network Adapters"
const L_Msg075_Text = "Index# IP address Description"
const L_Msg076_Text = "Select Network Adapter Index# (Blank=Cancel): "
const L_Msg077_Text = " Network Adapter Settings"
const L_Msg078_Text = "NIC Index"
const L_Msg079_Text = "Description"
const L_Msg080_Text = "IP Address"
const L_Msg081_Text = "DHCP enabled"
const L_Msg082_Text = "Preferred DNS Server"
const L_Msg083_Text = "Alternate DNS Server"
const L_Msg084_Text = "1) Set Network Adapter IP Address"
const L_Msg085_Text = "2) Set DNS Servers"
const L_Msg086_Text = "3) Clear DNS Server Settings"
const L_Msg087_Text = "4) Return to Main Menu"
const L_Msg088_Text = "Select option: "
const L_Msg089_Text = "Select (D)HCP, (S)tatic IP (Blank=Cancel): "
const L_Msg090_Text = "Set Static IP"
const L_Msg091_Text = "Enter static IP address: "
const L_Msg092_Text = "Enter subnet mask (Blank = Default "
const L_Msg093_Text = "): "
const L_Msg094_Text = "Enter default gateway: "
const L_Msg095_Text = "Setting NIC to static IP..."
const L_Msg096_Text = "The IP address could not be changed."
const L_Msg097_Text = "Network Settings"
const L_Msg098_Text = "Setting NIC to use DHCP..."
const L_Msg099_Text = "DNS Servers"
const L_Msg100_Text = "Enter new preferred DNS server (Blank=Cancel): "
const L_Msg101_Text = "Preferred DNS server set."
const L_Msg102_Text = "Enter alternate DNS server (Blank = none): "
const L_Msg103_Text = "Alternate DNS server set."
const L_Msg104_Text = "Alternate DNS server could not be set."
const L_Msg105_Text = "Preferred DNS server could not be set."
const L_Msg106_Text = "DNS servers removed. DNS servers will be automatically obtained from network."
const L_Msg107_Text = "DNS servers could not be deleted."
const L_Msg108_Text = "Failed to join workgroup"
const L_Msg109_Text = "Welcome to workgroup: "
const L_Msg110_Text = "Unknown"
const L_Msg111_Text = "Inspecting system..."
const L_Msg112_Text = "Please specify a valid IP address."
const L_Msg113_Text = "IP addresses with 127 are not valid because they are reserved for loopback addresses. Please specify some other valid value between 1 and 223."
const L_Msg114_Text = "Access is denied."
const L_Msg115_Text = "The parameter is incorrect."
const L_Msg116_Text = "The system cannot open the specified object."
const L_Msg117_Text = "Unable to update the password."
const L_Msg118_Text = "Logon failure: unknown username or password."
const L_Msg119_Text = "The specified domain either does not exist or could not be contacted."
const L_Msg120_Text = "The account already exists."
const L_Msg121_Text = "The machine is already joined to the domain."
const L_Msg122_Text = "The machine is not currently joined to a domain."
const L_Msg123_Text = "Failed to join domain."
const L_Msg124_Text = "Name of domain to join: "
const L_Msg125_Text = "Name of workgroup to join: "
const L_Msg126_Text = "Joining "
const L_Msg127_Text = "..."
const L_Msg128_Text = "==============================================================================="
const L_Msg129_Text = "E" '(E)nable
const L_Msg130_Text = "D" '(D)isable
const L_Msg131_Text = "S" '(S)tatic IP
const L_Msg132_Text = "D" '(D)HCP
const L_Msg133_Text = "W" '(W)orkgroup
const L_Msg134_Text = "D" '(D)omain
const L_Msg135_Text = "In a domain environment, specify domain\username."
const L_Msg136_Text = "In a workgroup environment, specify username."
const L_Msg137_Text = "M" 'Manual
const L_Msg138_Text = "A" 'Automatic
const L_Msg139_Text = "Subnet Mask"
const L_Msg140_Text = "Default Gateway"
const L_Msg141_Text = "Last manual check: "
const WUA_Script = "cscript WUA_SearchDownloadInstall.vbs"
Dim CmdResults
Dim pcname
Dim group_type
Dim groupname
Dim InDomain
Dim MgmtNIC
Dim patching_status
Dim Autopatch
Dim Update_schedule
Dim objNetAdapter
Dim DNSsetting
Dim DisplayIP
Dim objWshScriptExec
Dim TS_status
Dim ResultsTitle
Set oShell = WScript.CreateObject ("WScript.shell")
Set objWMIService = GetObject( "winmgmts:\\.\root\cimv2")
'Force to run with cscript
if Instr(1,Wscript.FullName,"Cscript",vbTextCompare)=0 then
oShell.Run "cscript " & chr(34) & wscript.ScriptFullName & chr(34)
wscript.quit
end if
GetInitialStatusValues()
Do
' Get NICs
Set nics = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration where IPenabled=TRUE")
' Try to select the first NIC with an active IP
for each n in nics
MgmtNIC= n.index
Set objNetAdapter = GetObject("winmgmts:Win32_NetworkAdapterConfiguration=" & MgmtNIC)
exit for
next
' Deal with case where NICs go away
if MgmtNIC="" then
'No active NIC
DisplayIP = L_Msg003_Text
else
Set objNetAdapter = GetObject("winmgmts:Win32_NetworkAdapterConfiguration=" & MgmtNIC)
if objNetAdapter.IPenabled then
DisplayIP = objNetAdapter.IPAddress(0)
else
'No Active NICs
DisplayIP = L_Msg003_Text
end if
end if
' Get Domain status
InDomain = GetDomainStatus()
' Get Remote Desktop status
CheckRemoteDesktop()
wscript.echo
wscript.echo L_Msg128_Text
wscript.echo L_Msg005_Text
wscript.echo L_Msg128_Text
wscript.echo
wscript.echo L_Msg006_Text & group_type &": " & groupname
wscript.echo L_Msg007_Text & pcname
if MgmtNIC="" then
wscript.echo L_Msg008_Text & vbTab & vbTab & vbTab & DisplayIP
else
wscript.echo L_Msg008_Text
end if
wscript.echo L_Msg009_Text
wscript.echo ""
wscript.echo L_Msg010_Text & Update_schedule
wscript.echo L_Msg011_Text & L_Msg141_Text & patching_status
wscript.echo L_Msg012_Text & TS_status
wscript.echo ""
wscript.echo L_Msg013_Text
wscript.echo L_Msg014_Text
wscript.echo ""
wscript.echo L_Msg015_Text
wscript.echo L_Msg016_Text
wscript.echo L_Msg017_Text
wscript.echo ""
wscript.echo L_Msg018_Text
For i=1 to 2
wscript.echo
next
wscript.StdOut.Write L_Msg019_Text
OptionSelection = Wscript.StdIn.ReadLine
wscript.echo
Select Case OptionSelection
Case "1" 'Change Domain/workgroup name
wscript.echo
wscript.echo L_Msg020_Text
do
wscript.echo
wscript.StdOut.Write L_Msg021_Text
DorW = Wscript.StdIn.ReadLine
'added ascw(DorW)=164 and ascw(DorW)=1072 to detect Russian character choice
loop until ucase(DorW)=ucase(L_Msg134_Text) or ucase(DorW)=ucase(L_Msg133_Text) or DorW="" or ascw(DorW)=164 or ascw(DorW)=1072
if ucase(DorW)=ucase(L_Msg133_Text) or ascw(DorW)=1072 then
'Join Workgroup
'If in a domain, we need to remove it first before joining a workgroup
if InDomain then
confirm = msgbox(L_Msg024_Text & vbCRLF & L_Msg025_Text,VBYesNo,L_Msg004_Text)
if confirm=vbYes then
wscript.StdOut.Write L_Msg026_Text
domainuser = Wscript.StdIn.ReadLine
wscript.echo
wscript.echo L_Msg027_Text
targetstr = "netdom remove %computername% /domain:" & NewGroupName & " /userd:" & domainuser & " /passwordd:*"
result= oShell.Run(targetstr,1,TRUE)
if result=0 then
confirm = msgbox(L_Msg028_Text & vbCRLF & L_Msg029_Text, VBYesNo,L_Msg030_Text)
if confirm=vbYes then oShell.Run "shutdown /r /t 0",1
else
DomainAccessErrorMsg(result)
end if
end if
else
JoinWorkgroup()
end if
end if
if ucase(DorW)=ucase(L_Msg134_Text) or ascw(DorW)=164 then
'Joining Domain
group_type= L_Msg022_Text
wscript.StdOut.Write L_Msg124_Text
NewGroupName = Wscript.StdIn.ReadLine
wscript.StdOut.Write L_Msg026_Text
domainuser = Wscript.StdIn.ReadLine
wscript.echo
wscript.echo L_Msg126_Text & NewGroupName & L_Msg127_Text
targetstr = "netdom join %computername% /domain:" & NewGroupName & " /userd:" & domainuser & " /passwordd:*"
result= oShell.Run(targetstr,1,TRUE)
if result=0 then
confirm = msgbox(L_Msg028_Text & vbCRLF & L_Msg029_Text, VBYesNo,L_Msg032_Text)
if confirm=vbYes then oShell.Run "shutdown /r /t 0",1
else
DomainAccessErrorMsg(result)
end if
end if
Case "2" 'Change Computer Name
wscript.StdOut.Write L_Msg033_Text
NewComputerName = Wscript.StdIn.ReadLine
if NewComputerName<>"" then
ResultsTitle= L_Msg034_Text
wscript.echo L_Msg035_Text
wscript.echo
if not InDomain then
'In workgroup
Set objWshScriptExec = oShell.Exec("netdom renamecomputer %computername% /force /NewName:" & NewComputerName)
DisplayCmdLineOutput()
result= objWshScriptExec.exitcode
else
'In Domain
wscript.StdOut.Write L_Msg026_Text
domainuser = Wscript.StdIn.ReadLine
result = oShell.Run("netdom renamecomputer %computername% /force /NewName:" & NewComputerName & " /userd:" & domainuser & " /passwordd:*",1,TRUE)
if result<>0 then
DomainAccessErrorMsg(result)
end if
end if
if result=0 then
confirm = msgbox(L_Msg028_Text & vbCRLF & L_Msg029_Text, VBYesNo,L_Msg030_Text)
if confirm=vbYes then oShell.Run "shutdown /r /t 0",1
end if
end if
Case "3" 'Change Management NIC Assignment
If MgmtNIC<>"" then
ManagementNICsettings()
else
'Display no active NIC message
DisplayIP = L_Msg003_Text
Msgbox DisplayIP,vbExclamation,L_Msg004_Text
end if
Case "4" 'Add Account to local admin
wscript.echo L_Msg135_Text
wscript.echo L_Msg136_Text
wscript.echo
wscript.StdOut.Write L_Msg036_Text
AddUserAcct = Wscript.StdIn.ReadLine
if AddUserAcct="" then
'cancel
else
if not InDomain then
'Handle workgroup case by creating account first
targetstr = "net user " & AddUserAcct & " * /add"
result= oShell.Run(targetstr,1,TRUE)
end if
wscript.echo L_Msg037_Text
targetstr= "net localgroup administrators /add " & AddUserAcct
result= oShell.Run(targetstr,7,TRUE)
select case result
Case 0
msgbox L_Msg039_Text & vbCrLf & AddUserAcct,vbInformation,L_Msg038_Text
Case 1
msgbox L_Msg040_Text & vbCrLf & AddUserAcct,vbCritical,L_Msg038_Text
Case else
msgbox L_Msg042_Text & vbCrLf & AddUserAcct,vbCritical,L_Msg038_Text
end select
end if
Case "5" 'Update Settings
wscript.echo L_Msg043_Text & Update_schedule
wscript.StdOut.Write L_Msg044_Text
updateselection = Wscript.StdIn.ReadLine
if ucase(updateselection)=ucase(L_Msg138_Text) then
'Make updates automatic
Update_schedule= L_Msg045_Text
strSchedule= L_Msg046_Text
wscript.echo
wscript.echo L_Msg047_Text
oShell.Run "Cscript %WinDir%\System32\SCregEdit.wsf /AU 4" & NewComputerName,7,TRUE
end if
if ucase(updateselection)=ucase(L_Msg137_Text) then
'Make updates manual
Update_schedule= L_Msg048_Text
strSchedule= L_Msg049_Text
wscript.echo
wscript.echo L_Msg050_Text
oShell.Run "Cscript %WinDir%\System32\SCregEdit.wsf /AU 1" & NewComputerName,7,TRUE
end if
if ucase(updateselection)=ucase(L_Msg137_Text) or ucase(updateselection)=ucase(L_Msg138_Text) then
oShell.Run "Net stop wuauserv",7,TRUE
oShell.Run "Net start wuauserv",7,TRUE
MsgBox L_Msg051_Text & Update_schedule & ". " & strSchedule, vbInformation, L_Msg052_Text
end if
Case "6" 'Install Security Patches
'Install all patches
oShell.Run WUA_Script,1,False
on error resume next
patching_status = Now()
oShell.RegWrite "HKLM\Software\Microsoft\HyperVServerQuickSettings\PatchDate",patching_status
on error goto 0
Case "7" 'Enable/disable Remote Desktop
WScript.Echo
wscript.StdOut.Write L_Msg053_Text
rd = Wscript.StdIn.ReadLine
if ucase(rd)=ucase(L_Msg129_Text) then ' Enable
do
wscript.echo
wscript.echo L_Msg054_Text
wscript.echo
wscript.echo L_Msg055_Text
wscript.echo
wscript.StdOut.Write L_Msg056_Text
rdsecuritylevel = Wscript.StdIn.ReadLine
loop while not (rdsecuritylevel="1" or rdsecuritylevel="2")
wscript.echo
wscript.echo L_Msg057_Text
'Enable Remote Desktop Admin mode
result=oShell.Run("Cscript %WinDir%\System32\Scregedit.wsf /ar 0 " & NewComputerName,7,TRUE)
oShell.Run "Cscript %WinDir%\System32\Scregedit.wsf /cs 1 " & NewComputerName,7,TRUE
if result=0 then
if rdsecuritylevel=2 then
'Allow WinXP and Win 2003 clients
oShell.Run "Cscript %WinDir%\System32\Scregedit.wsf /cs 0 " & NewComputerName,7,TRUE
msgbox L_Msg058_Text,Information,L_Msg059_Text
else
msgbox L_Msg060_Text,Information,L_Msg059_Text
end if
else
msgbox L_Msg061_Text,vbCritical,L_Msg059_Text
end if
end if
if ucase(rd)=ucase(L_Msg130_Text) then
wscript.echo
wscript.echo L_Msg062_Text
'Disable Remote Desktop mode
result=oShell.Run("Cscript %WinDir%\System32\Scregedit.wsf /ar 1 " & NewComputerName,7,TRUE)
oShell.Run "Cscript %WinDir%\System32\Scregedit.wsf /cs 1 " & NewComputerName,7,TRUE
if result=0 then
msgbox L_Msg063_Text,vbInformation,L_Msg059_Text
else
msgbox L_Msg061_Text,vbCritical,L_Msg059_Text
end if
end if
Case "8" 'Set Region and Language
oShell.Run "control intl.cpl"
Case "9" 'Set Date and Time
oShell.Run "control timedate.cpl"
Case "10" 'Logoff
confirm = msgbox(L_Msg064_Text, vbYesNo+vbDefaultButton2,L_Msg065_Text)
if confirm=vbYes then
oShell.Run "logoff",7,True
end if
Case "11" ' Restart
confirm = msgbox(L_Msg066_Text, vbYesNo+vbDefaultButton2,L_Msg030_Text)
if confirm=vbYes then oShell.Run "shutdown /r /t 0",1
Case "12" ' Shut Down
confirm = msgbox(L_Msg067_Text, vbYesNo+vbDefaultButton2,L_Msg068_Text)
if confirm=vbYes then oShell.Run "shutdown /s /t 0",1
Case "13" 'Exit
wscript.quit
Case Else
'msgbox "--- Invalid input! ---"
end Select
Loop until OptionSelection="13" 'Loops back to main menu unless exiting
wscript.quit
sub CheckRemoteDesktop()
' True if Remote Desktop enabled
Dim Sh, sKey, sValueName, sValue, nValue
Set Sh = CreateObject("WScript.Shell")
sKey = "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\"
sValueName = "fDenyTSConnections"
sValue = Sh.RegRead(SKey & sValueName)
if sValue=0 then
nValue= Sh.RegRead(sKey & "WinStations\RDP-Tcp\UserAuthentication")
if nValue = 0 then
TS_status= L_Msg069_Text
else
TS_status= L_Msg070_Text
end if
else
TS_status= L_Msg071_Text
end if
End sub
Function LegalNicSelected(pickedNIC)
LegalNicSelected=False
For Each nic in nics
if pickedNIC=CStr(nic.Index) then
LegalNicSelected=True
end if
Next
end Function
Sub ManagementNICsettings()
Set nics = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration where IPenabled=TRUE")
Set objNetAdapter = GetObject("winmgmts:Win32_NetworkAdapterConfiguration=" & MgmtNIC)
wscript.echo
wscript.echo L_Msg072_Text
wscript.echo L_Msg073_Text
wscript.echo L_Msg072_Text
wscript.echo
wscript.echo
wscript.echo L_Msg074_Text
wscript.echo
wscript.echo L_Msg075_Text
For Each nic in nics
if nic.IPenabled then
DisplayIP = nic.IPAddress(0)
else
DisplayIP=L_Msg002_Text
end if
wscript.echo
'Adjust spacing for non EN-US
if instr(L_Msg075_Text,"Index#") then
wscript.StdOut.Write " " & nic.Index & VBTab & DisplayIP & VBTab & left(nic.Description,54)
else
wscript.StdOut.Write " " & nic.Index & VBTab & VBTab & DisplayIP & VBTab & left(nic.Description,47)
end if
Next
wscript.Echo
do
wscript.Echo
wscript.StdOut.Write L_Msg076_Text
SelectedNIC = Wscript.StdIn.ReadLine
loop until LegalNicSelected(SelectedNIC) or SelectedNIC = ""
if SelectedNIC="" then
'Do nothing, Cancel was selected, return to main menu
else
'Set the MgmtNIC to a legal value
MgmtNIC=SelectedNIC
do
wscript.echo
wscript.echo L_Msg072_Text
wscript.echo L_Msg077_Text
wscript.echo L_Msg072_Text
wscript.echo
Set nics = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration where IPenabled=TRUE")
Set objNetAdapter = GetObject("winmgmts:Win32_NetworkAdapterConfiguration=" & MgmtNIC)
'Display NIC info (IP, DHCP, DNS)
For Each nic in nics
if nic.index=cint(MgmtNIC) then
if nic.IPenabled then
DisplayIP = nic.IPAddress(0)
else
DisplayIP=L_Msg002_Text
end if
wscript.echo
wscript.echo L_Msg078_Text & vbTab & vbTab & MgmtNIC
wscript.echo L_Msg079_Text & vbTab & vbTab & nic.Description
wscript.echo L_Msg080_Text & vbTab & vbTab & DisplayIP
wscript.echo L_Msg139_Text & vbTab & vbTab & nic.IPSubnet(0)
wscript.echo L_Msg081_Text & vbTab & vbTab & nic.DHCPenabled
on error resume next
DefaultGateway= cstr(nic.DefaultIPGateway(0))
if err<>0 then
DefaultGateway=""
end if
on error goto 0
wscript.echo L_Msg140_Text & vbTab & vbTab & DefaultGateway
on error resume next
primarydns= cstr(nic.DNSServerSearchOrder(0))
if err<>0 then
primarydns=""
end if
altdns= cstr(nic.DNSServerSearchOrder(1))
if err<>0 then
altdns=""
end if
on error goto 0
wscript.echo L_Msg082_Text & vbTab & primarydns
wscript.echo L_Msg083_Text & vbTab & altdns
end if
Next
'Display Network Adapter Options
wscript.echo
wscript.echo L_Msg084_Text
wscript.echo L_Msg085_Text
wscript.echo L_Msg086_Text
wscript.echo L_Msg087_Text
wscript.echo
wscript.echo
do
wscript.StdOut.Write L_Msg088_Text
NIC_option = Wscript.StdIn.ReadLine
loop until (left(NIC_option,1)>= "1" and left(NIC_option,1) <= "4") or NIC_option=""
Select Case NIC_option
Case "1" ' Set NIC IP to DCHP or Static
'---- Set IP for Selected NIC
wscript.echo
wscript.echo
wscript.StdOut.Write L_Msg089_Text
IPtypeSelection = Wscript.StdIn.ReadLine
Select Case ucase(IPtypeSelection)
Case ucase(L_Msg131_Text) 'Set Static IP
wscript.echo L_Msg090_Text
do
wscript.StdOut.Write L_Msg091_Text
ip_address = wscript.StdIn.ReadLine
loop until CheckStaticIP(ip_address)
wscript.StdOut.Write L_Msg092_Text & DefaultNetmask(ip_address) & L_Msg093_Text
netmask = wscript.StdIn.ReadLine
if netmask="" then netmask=DefaultNetmask(ip_address)
' Get Gateway
do
wscript.StdOut.Write L_Msg094_Text
gateway = wscript.StdIn.ReadLine
loop until CheckStaticIPGateway(gateway)
strIPAddress = Array(ip_address)
strSubnetMask = Array(netmask)
strGateway = Array(gateway)
strGatewayMetric = Array(1)
wscript.echo L_Msg095_Text
'clear out all gateway entries first
arrClearGateways = Array()
errGateways = objNetAdapter.SetGateways(arrClearGateways, null)
objNetAdapter.ReleaseDHCPLease
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
If errEnable=0 Then
Set objNetAdapter = GetObject("winmgmts:Win32_NetworkAdapterConfiguration=" & MgmtNIC)
Else
msgbox L_Msg096_Text,vbCritical,L_Msg097_Text
wscript.echo L_Msg096_Text
End If
Case ucase(L_Msg132_Text) 'Set DHCP
wscript.echo
wscript.echo L_Msg098_Text
'clear out all gateway entries first
arrClearGateways = Array()
errGateways = objNetAdapter.SetGateways(arrClearGateways, null)
errEnable = objNetAdapter.EnableDHCP()
objNetAdapter.RenewDHCPLease
If errEnable = 0 Then
Set objNetAdapter = GetObject("winmgmts:Win32_NetworkAdapterConfiguration=" & MgmtNIC)
Else
msgbox L_Msg096_Text,vbCritical,L_Msg097_Text
wscript.echo L_Msg096_Text
End If
Case Else
'Cancel
end Select
Case "2" ' Change DNS
wscript.echo L_Msg099_Text
wscript.echo
wscript.StdOut.Write L_Msg100_Text
DNSServer = wscript.StdIn.ReadLine
strDNSServer=Array(DNSServer)
if DNSServer="" then
'Cancelled
else
'Set Preferred DNS
errDNS = objNetAdapter.SetDNSServerSearchOrder(strDNSServer)
If errDNS=0 Then
'Preferred DNS successfully set, set alternate
msgbox L_Msg101_Text,vbInformation,L_Msg097_Text
wscript.StdOut.Write L_Msg102_Text
altDNSServer = wscript.StdIn.ReadLine
strDNSServer=Array(DNSServer,altDNSServer)
if altDNSServer="" then
'skip entering alternate DNS
else
errDNS = objNetAdapter.SetDNSServerSearchOrder(strDNSServer)
If errDNS=0 Then
'Alternate DNS successfully set
msgbox L_Msg103_Text,vbInformation,L_Msg097_Text
wscript.echo L_Msg103_Text
else
msgbox L_Msg104_Text,vbCritical,L_Msg097_Text
wscript.echo L_Msg104_Text
end If
end if
else
msgbox L_Msg105_Text,vbCritical,L_Msg097_Text
end If
end if
Case "3" ' Remove DNS server settings
'clear out all entries and reset
arrDNSServers = Array()
errDNS = objNetAdapter.SetDNSServerSearchOrder(arrDNSServers)
If errDNS=0 Then
'DNS successfully cleared
msgbox L_Msg106_Text,vbInformation,L_Msg097_Text
wscript.echo L_Msg106_Text
else
msgbox L_Msg107_Text,vbCritical,L_Msg097_Text
wscript.echo L_Msg107_Text
end If
Case "4" ' return to Main Menu
Case else
end Select
Loop Until NIC_option="4" or NIC_option=""
end if
end sub
sub DisplayCmdLineOutput()
Set objStdOut = objWshScriptExec.StdOut
CmdResults = ""
While Not objStdOut.AtEndOfStream
strLine = objStdOut.ReadLine
wscript.echo strLine
CmdResults = CmdResults & vbCrLF & strLine
Wend
If len(CmdResults)>2 then msgbox CmdResults,vbInformation,resultstitle
end sub
sub JoinWorkgroup
group_type= L_Msg023_Text
wscript.StdOut.Write L_Msg125_Text
NewGroupName = Wscript.StdIn.ReadLine
wscript.echo
wscript.echo L_Msg126_Text & NewGroupName & L_Msg127_Text
targetstr = "Wmic computersystem where name=" & chr(34) & "%computername%" & chr(34) & " call joindomainorworkgroup name=" & chr(34) & NewGroupName & chr(34)
returncode = oShell.Run(targetstr,7,TRUE)
if returncode<>0 then
msgbox L_Msg108_Text,VBCritical,L_Msg023_Text
else
msgbox L_Msg109_Text & NewGroupName,vbInformation,L_Msg023_Text
end if
end sub
Sub GetInitialStatusValues()
wscript.echo L_Msg111_Text
on error resume next
regexists = oShell.RegRead("HKLM\SOFTWARE\Microsoft\HyperVserverQuickSettings\PatchDate")
if isEmpty(regexists) then
oShell.RegWrite "HKLM\Software\Microsoft\HyperVServerQuickSettings\PatchDate",L_Msg110_Text
end if
' Get update settings status
AutoPatch = oShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\AUOptions")
if AutoPatch=4 then
Update_schedule = L_Msg045_Text
else
Update_schedule = L_Msg048_Text
end if
patching_status = oShell.RegRead("HKLM\SOFTWARE\Microsoft\HyperVserverQuickSettings\PatchDate")
Set nics = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration where IPenabled=TRUE")
' Try to select the first NIC with an active IP
if MgmtNIC="" then
DisplayIP = L_Msg001_Text
for each n in nics
MgmtNIC= n.index
Set objNetAdapter = GetObject("winmgmts:Win32_NetworkAdapterConfiguration=" & MgmtNIC)
exit for
next
end if
if MgmtNIC="" then
'Display no active NIC message
DisplayIP = L_Msg003_Text
Msgbox DisplayIP,vbExclamation,L_Msg004_Text
end if
on error goto 0
End Sub
Function CheckStaticIP(ip)
on error resume next
IPstart = left(ip,instr(ip,".")-1)
on error goto 0
if IPstart>=1 and IPstart<224 then
CheckStaticIP=TRUE
else
msgbox L_Msg112_Text,vbCritical,L_Msg097_Text
CheckStaticIP=FALSE
end if
if IPstart=127 then
CheckStaticIP=FALSE
msgbox L_Msg113_Text,vbCritical,L_Msg097_Text
end if
end function
Function CheckStaticIPGateway(ip)
on error resume next
IPstart = left(ip,instr(ip,".")-1)
on error goto 0
if (IPstart>=1 and IPstart<224) or ip="" then
CheckStaticIPGateway=TRUE
else
msgbox L_Msg112_Text,vbCritical,L_Msg097_Text
CheckStaticIPGateway=FALSE
end if
if IPstart=127 then
CheckStaticIPGateway=FALSE
msgbox L_Msg113_Text,vbCritical,L_Msg097_Text
end if
end function
Function DefaultNetmask(ip)
DefaultNetmask=""
on error resume next
IPstart = left(ip,instr(ip,".")-1)
on error goto 0
if IPstart>=0 and IPstart <127 then
DefaultNetmask="255.0.0.0"
end if
if IPstart>127 and IPstart <224 then
DefaultNetmask="255.255.255.0"
end if
end function
Sub DomainAccessErrorMsg(result)
Select Case result
Case 5 strErrorDescription = L_Msg114_Text
Case 87 strErrorDescription = L_Msg115_Text
Case 110 strErrorDescription = L_Msg116_Text
Case 1323 strErrorDescription = L_Msg117_Text
Case 1326 strErrorDescription = L_Msg118_Text
Case 1355 strErrorDescription = L_Msg119_Text
Case 2224 strErrorDescription = L_Msg120_Text
Case 2691 strErrorDescription = L_Msg121_Text
Case 2692 strErrorDescription = L_Msg122_Text
Case else strErrorDescription = L_Msg123_Text
End Select
msgbox strErrorDescription,vbCritical,L_Msg022_Text
end sub
Function GetDomainStatus()
Set colItems = objWMIService.ExecQuery( "Select * from Win32_ComputerSystem", , 48 )
For Each objItem in colItems
pcname = objItem.Name
strComputerDomain = objItem.Domain
If objItem.PartOfDomain Then
group_type= L_Msg022_Text
groupname= strComputerDomain
GetDomainStatus=TRUE
Else
group_type= L_Msg023_Text
groupname= strComputerDomain
GetDomainStatus=FALSE
End If
Next
end Function
Tags: Microsoft+Hyper-V+Server