Búsqueda de sitios web

Obtenga un nombre de dominio completo en PowerShell [7 formas]


Usando variables de entorno

Utilice una variable de entorno para obtener un nombre de dominio completo.

Usar variable de entorno:

$computer_name = $env:COMPUTERNAME
$fqdn = $env:USERDNSDOMAIN
Write-Output "Fully Qualified Domain Name: $computer_name.$fqdn"

PRODUCCIÓN :

Fully Qualified Domain Name: MAS-DC-01.MASLAB.COM

Primero, asignamos el valor de la variable de entorno ($evn:COMPUTERNAME) a la variable $computer_name. La variable de entorno COMPUTERNAME almacenó el nombre de la computadora actual o puede decir el nombre del host actual; ambos significan lo mismo.

Luego, asignamos a la variable $fqdn el valor de la variable de entorno $env:USERDNSDOMAIN. Aquí, el USERDNSDOMAIN almacenó el nombre de dominio DNS, que estaba asociado con el usuario actual. Esto significaba que indicaba el nombre de dominio en el que estaba registrada la cuenta de usuario.

Finalmente, unimos el valor de $computer_name y $fqdn separándolos con un punto. Usamos el cmdlet Write-Output para mostrarlo en la consola de PowerShell.

Usando la clase System.Net.Dns

Utilice la clase System.Net.Dns para obtener un nombre de dominio completo.

Utilice la clase System.Net.Dns:

$host_name = [System.Net.Dns]::GetHostName()
$ip_addresses = [System.Net.Dns]::GetHostAddresses($host_name)
foreach ($current_ip in $ip_addresses) {
    if ($current_ip.AddressFamily -eq 'InterNetwork') {
        $fqdn = [System.Net.Dns]::GetHostEntry($current_ip).HostName
        break
    }
}
Write-Output "Fully Qualified Domain Name: $fqdn"

PRODUCCIÓN :

Fully Qualified Domain Name: MAS-DC-01.maslab.com

El método GetHostName() se llamó utilizando la clase Dns. Lo usamos para recuperar el nombre de la máquina local, que luego se asignó a la variable $host_name.

Usamos otro método llamado GetHostAddresses(), proporcionándole $host_name como parámetro para obtener una matriz de todas las direcciones IP asociadas con $host_name. código>. Almacenamos esta matriz en la variable $ip_addresses.

Luego, usamos el bucle foreach para buclear la matriz $ip_addresses. En cada iteración, utilizamos la instrucción if con el operador -eq (igual a) para determinar si la familia de direcciones (AddressFamily) de un La dirección IP actual ($current_ip) era igual a InterNetwork, que se parecía a las direcciones IPv4.

El método GetHostEntry(), que requería el parámetro $current_ip para crear un objeto System.Net.IPHostEntry, se utilizaba si se cumplía el requisito. . Usamos la propiedad HostName del objeto System.Net.IPHostEntry para obtener el FQDN, que se almacenó en la variable $fqdn. A continuación, salimos del bucle usando la instrucción break.

¿Por qué salimos del bucle for? Porque solo queríamos usar la primera dirección IPv4 para obtener el FQDN. Por último, utilizamos el cmdlet Write-Output para imprimir $fqdn en la consola.

Las siguientes son la solución unifilar:

Utilice la clase System.Net.Dns:

[System.Net.Dns]::GetHostEntry($env:COMPUTERNAME).HostName
#OR
[System.Net.Dns]::GetHostEntry([string]"localhost").HostName

PRODUCCIÓN :

MAS-DC-01.maslab.com
MAS-DC-01.maslab.com

Según la documentación, los métodos GetHostByName() y Resolve() están en desuso.

Usando el comando ping

Utilice el comando ping para obtener un nombre de dominio completo.

Utilice el comando ping:

$fqdn= $(ping localhost -n 1)[1].split(" ")[1]
Write-Output "Fully Qualified Domain Name: $fqdn"

PRODUCCIÓN :

Fully Qualified Domain Name: MAS-DC-01.maslab.com

Usamos el comando ping, que es un comando de PowerShell para obtener el FQDN de la computadora local haciendo ping al nombre de host y analizando el resultado. ¿Cómo funcionó el ping en el ejemplo anterior? El ping localhost -n 1 se usó para hacer ping a la computadora local una vez para recuperar el nombre de host y la dirección IP.

Luego, usamos la sustitución del comando ($ (...)) para capturar la salida del comando ping localhost -n 1; sin embargo, [1] obtuvo la segunda línea de la salida capturada que contiene el nombre de host. Además, encadenamos el método split(" ") para dividir esta segunda línea en la matriz de palabras usando un espacio como delimitador y recuperamos la segunda palabra (un nombre de host) accediendo al 1. indexa como [1].

Almacenamos el resultado final en la variable $fqdn, que se usó además con el cmdlet Write-Output para imprimir su valor en la consola de PowerShell.

Si no accede al índice 1 dos veces como se demuestra en el ejemplo anterior, obtendrá un resultado más detallado que incluye información sobre los paquetes (enviados, recibidos, perdidos), tiempos de ida y vuelta (mínimo, máximo, promedio), etc

Usando el cmdlet Get-WmiObject

Utilice el cmdlet Get-WmiObject para obtener un nombre de dominio completo.

Utilice el cmdlet Get-WmiObject:

$computer_name = $env:COMPUTERNAME
$wmi_obj = Get-WmiObject -Class Win32_ComputerSystem -Namespace 'root\CIMv2'
$domain_name = $wmi_obj.Domain
Write-Output "Fully Qualified Domain Name: $computer_name.$domain_name"

PRODUCCIÓN :

Fully Qualified Domain Name: MAS-DC-01.maslab.com

Comenzamos usando la variable de entorno $env:COMPUTERNAME para obtener el nombre de la computadora de una máquina local y lo guardamos en la variable $computer_name. Recuerde, el $env:COMPUTERNAME contenía el nombre de la computadora actual.

Luego, utilizamos el cmdlet Get-WmiObject para consultar el Instrumental de administración de Windows para obtener detalles sobre un sistema informático; en particular, nos dirigimos a la clase Win32_ComputerSystem del espacio de nombres root\CIMv2, que contenía diferentes propiedades sobre el sistema operativo y el hardware de la computadora. Almacenamos los detalles en la variable $wmi_obj. Aquí, el $wmi_obj representaba el objeto WMI.

Especificamos la clase Win32_ComputerName y el espacio de nombres 'root\CIMv2' usando los parámetros -Class y -NameSpace, respectivamente.

Además, utilizamos esta variable para acceder al valor de su propiedad Domain que representa el nombre de un dominio de Active Directory al que se unió una computadora. El valor resultante se almacenó en la variable $domain_name. Finalmente, utilizamos el cmdlet Write-Output para imprimir el nombre de dominio completo en la consola de PowerShell.

Alternativamente, podemos usar el alias del cmdlet Get-WmiObject como se muestra a continuación:

Utilice el cmdlet Get-WmiObject:

(gwmi -Class Win32_ComputerSystem).DNSHostName+"."+(gwmi -Class Win32_ComputerSystem).Domain

PRODUCCIÓN :

MAS-DC-01.maslab.com

Aquí, utilizamos las propiedades .DNSHostName y .Domain para obtener el nombre de la computadora local y el dominio al que estaba unida la computadora local. Concatenamos ambos usando el operador de concatenación (+) separándolos con un punto (.).

Usando el cmdlet Get-CimInstance

Utilice el cmdlet Get-CimInstance para obtener un nombre de dominio completo. Continúe con la siguiente solución si está utilizando PowerShell 3.0+. ¿Por qué? A partir de PowerShell 3.0, Get-WmiObject ha sido reemplazado por Get-CimInstance. Recuerde, puede utilizar Get-CimInstance solo en plataformas Windows.

Utilice el cmdlet Get-CimInstance:

(Get-CimInstance -Class Win32_ComputerSystem).Name+"."+(Get-CimInstance -ClassWin32_ComputerSystem).Domain

PRODUCCIÓN :

MAS-DC-01.maslab.com

Este fragmento se parece al último ejemplo aprendido en la sección anterior, pero utilizamos el cmdlet GetCimInstance para recuperar información sobre la clase Win32_ComputerSystem. Usamos las propiedades .Name y .Domain para obtener el nombre de una computadora local y el dominio al que se unió esta computadora.

Usando el cmdlet Get-ADComputer

Utilice el cmdlet Get-ADComputer para obtener un nombre de dominio completo. Debe instalar Active Directory en su máquina para utilizar este cmdlet.

Utilice el cmdlet Get-ADComputer:

$fqdn = (Get-ADComputer $(hostname)).DNSHostName
Write-Output "Fully Qualified Domain Name: $fqdn"

PRODUCCIÓN :

Fully Qualified Domain Name: MAS-DC-01.maslab.com

El comando anterior recuperó el nombre de host DNS de la computadora local usando el módulo Active Directory. ¿Cómo funcionó? Usamos el comando hostname como $ (hostname) para obtener el nombre de host de una computadora local, que se especificó como argumento para el cmdlet Get-ADComputer.

Luego, el cmdlet Get-ADComputer accedió a la información relativa a un objeto de computadora en Active Directory. Finalmente, usamos la propiedad DNSHostName para tener el nombre de host DNS del objeto de computadora. Asignamos el valor resultante a la variable $fqdn para mostrarlo aún más en la consola usando el cmdlet Write-Output.

Usando el Registro

Utilice el registro para obtener un nombre de dominio completo. Puede utilizar esta solución si ha instalado Active Directory en su computadora.

Usar Registro:

$domain_name = (Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters').Domain
$computer_name = $env:COMPUTERNAME
$fqdn = "$computer_name.$domain_name"
Write-Output "Fully Qualified Domain Name: $fqdn"

PRODUCCIÓN :

Fully Qualified Domain Name: MAS-DC-01.maslab.com

Usamos el cmdlet Get-ItemProperty para acceder a la clave de registro 'HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters' para recuperar sus propiedades. La clave de registro que utilizamos para este código contenía ajustes de configuración relacionados con la red.

Usamos la propiedad .Domain para recuperar el nombre de dominio de la computadora. Este nombre de dominio suele establecerse en el registro cuando una computadora se conecta al dominio de Active Directory. Almacenamos el valor de la propiedad .Domain en la variable $domain_name.

Después de eso, usamos $env:COMPUTERNAME para obtener el nombre de la computadora local y lo almacenamos en la variable $computer_name. A continuación, unimos $computer_name y $domain_name separándolos usando un punto (.), y asignamos el valor concatenado al Variable $fqdn, que se usó además con Write-Output para mostrarla en la consola de PowerShell.

Se trata de cómo obtener un nombre de dominio completo en PowerShell.

Artículos relacionados