Come get l'indirizzo IP per la connessione locale locale in Windows Server?

Vorrei creare un file batch o vbs che metterà insieme un url e eseguirà. Una parte di tale URL deve essere l'indirizzo IP effettivo della macchina. Come posso get l'indirizzo IP in una variabile per includerlo nello script?

EDIT 1:

Ho scoperto che il command in basso mi darà l'indirizzo IP, ma ancora non so come get quel valore in una variabile per utilizzarlo in uno script.

c:\> wmic NICCONFIG WHERE IPEnabled=true GET IPAddress /format:csv Node,IPAddress IP-0AFB,{10.25.5.2} 

  • Qual è l'equivalente più vicino di "media di carico" in Windows disponibile tramite WMI?
  • SCCM Globale Condizione WQL Tipo di query non corrispondente (wbemErrTypeMismatch - 0x80041005)
  • Rileva WMI danneggiato
  • Le query WMI non possono essere eseguite con un FQDN?
  • SCCM 2012 SP1 - DownloadContentFiles () non riuscito con hr = 0x80041013
  • Rimuove in modo programmato / remoto Windows non attendibile ma "legato" da Active Directory
  • Problemi con WMI Server 2008 R2
  • Qual è la class WMI per gestire BitLockerToGo
  • 6 Solutions collect form web for “Come get l'indirizzo IP per la connessione locale locale in Windows Server?”

    Ecco un codice di esempio che ho usato in uno script precedente …

     Dim myIPAddress : myIPAddress = "" Dim objWMIService : Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") Dim colAdapters : Set colAdapters = objWMIService.ExecQuery("Select IPAddress from Win32_NetworkAdapterConfiguration Where IPEnabled = True") Dim objAdapter For Each objAdapter in colAdapters If Not IsNull(objAdapter.IPAddress) Then myIPAddress = trim(objAdapter.IPAddress(0)) exit for Next Wscript.echo "My IPAddress is " & myIPAddress 

    Se si desidera restituire l'indirizzo IP in una variabile, è ansible effettuare le seguenti operazioni:

     Const wbemFlagReturnImmediately = &h10 Const wbemFlagForwardOnly = &h20 Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled='TRUE'", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly) For Each objItem In colItems strIPAddress = Join(objItem.IPAddress, ",") *yourFunctionName*(strIPAddress) Next 

    Questo codice viene eseguito direttamente dalla Scriptomatic v2.0 dal TechNet Scriptcenter di Microsoft. Trovato qui: http://technet.microsoft.com/en-us/scriptcenter/dd939957.aspx

    Ecco un modo per estrarre i risultati WMIC in una variabile in uno script cmd:

     @echo off setlocal set varcounter=0 set wmicmd="wmic NICCONFIG WHERE IPEnabled=true GET IPAddress" for /f "tokens=1 delims={, skip=1" %%a in ('%wmicmd%') do call :SETVAR %%a endlocal goto :eof :SETVAR set /a varcounter=%varcounter% + 1 if not {%1}=={} ( echo NIC %varcounter% address is {%1} set NIC%varcounter%=%1 ) goto :eof 

    Si noti che poiché ci possono essere più NICs, dobbiamo eseguire loop attraverso l'output di WMIC, che viene eseguito chiamando: SETVAR per each row dell'output WMIC (saltando il primo e comunque testando le linee di traccia vuote. per ciascuna NIC triggersta trovata – le variables saranno% NIC1%,% NIC2%, ecc.

    La row 12, a partire da "echo NIC" , può essere rimossa una volta che lo si esegue a vostra soddisfazione.

    Sai, per rendere questo REALLLLLY utile, ho aggiunto /node:%1 (per get IP del computer remoto) Consente di risparmiare qualche legwork per amministratori di sistema e amministratori di networking in modo ping o nslookup. Sono sicuro che l'altra cosa che aggiungerò è 'il controllo degli errori' in modo che, se il sistema non è disponibile, lo script può "registrare tale informazione" – come il System %1 not available – e poi andare avanti per afferrare il ip del prossimo sistema.

    Spesso, faccio un "pipistrello" per "call un pipistrello" Quindi, vorrei solo creare un file batch forse come "getall.bat" di seguito:

    Quindi eseguirlo come questo: getall > getall-log.txt 2>&1

    (Sopra metterà fuori tutte le informazioni in un file di text, compresi eventuali errori rilevati)

    getall.bat

     rem getall.bat call getnic.bat workstation1 call getnic.bat workstation2 call getnic.bat server1 call getnic.bat server2 rem end of getall.bat 

    getnic.bat

     rem - getnic.bat @echo off setlocal set varcounter=0 set wmicmd="wmic /node:%1 NICCONFIG WHERE IPEnabled=true GET IPAddress" for /f "tokens=1 delims={, skip=1" %%a in ('%wmicmd%') do call :SETVAR %%a endlocal goto :eof :SETVAR set /a varcounter=%varcounter% + 1 if not {%1}=={} ( echo NIC %varcounter% address is {%1} set NIC%varcounter%=%1 ) goto :eof rem end of getnic.bat 

    Convertito per IPv6

     @echo off setlocal set varcounter=0 set wmicmd="wmic NICCONFIG WHERE IPEnabled=true GET IPAddress" for /f "tokens=2 delims={, skip=1" %%a in ('%wmicmd%') do call :SETVAR %%a endlocal goto :eof :SETVAR set /a varcounter=%varcounter% + 1 if not {%1}=={} ( echo NIC %varcounter% IPv6 address is {%1} set NIC%varcounter%=%1 ) goto :eof 

    So che hai chiesto uno script di stile VBS o Batch, ma ho pensato di aggiungere uno snippet di PowerShell anche se volevi provare quella rotta o per chiunque altro a guardare questa domanda …

     [System.Net.Dns]::GetHostAddresses([System.Net.Dns]::GetHostName()) | foreach {write $_.IPAddressToString} 

    Ciò restituirà tutti gli indirizzi IP attualmente assegnati alla macchina.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.