Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este exemplo só se aplica às plataformas Windows.
Como TCP/IP é o protocolo de rede mais usado, a maioria das tarefas de administração de protocolo de rede de baixo nível envolve TCP/IP. Nesta seção, usamos o PowerShell e o WMI para realizar essas tarefas.
Listando endereços IP para um computador
Para obter todos os endereços IP em uso no computador local, use o seguinte comando:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
Select-Object -ExpandProperty IPAddress
Como a propriedade IPAddress de um objeto Win32_NetworkAdapterConfiguration é uma matriz, você deve usar o parâmetro ExpandProperty de Select-Object
para ver toda a lista de endereços.
10.0.0.1
fe80::60ea:29a7:a233:7cb7
2601:600:a27f:a470:f532:6451:5630:ec8b
2601:600:a27f:a470:e167:477d:6c5c:342d
2601:600:a27f:a470:b021:7f0d:eab9:6299
2601:600:a27f:a470:a40e:ebce:1a8c:a2f3
2601:600:a27f:a470:613c:12a2:e0e0:bd89
2601:600:a27f:a470:444f:17ec:b463:7edd
2601:600:a27f:a470:10fd:7063:28e9:c9f3
2601:600:a27f:a470:60ea:29a7:a233:7cb7
2601:600:a27f:a470::2ec1
Usando o cmdlet Get-Member
, você pode ver que a propriedade IPAddress é uma matriz:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
Get-Member -Name IPAddress
TypeName: Microsoft.Management.Infrastructure.CimInstance#root/cimv2/Win32_NetworkAdapterConfiguration
Name MemberType Definition
---- ---------- ----------
IPAddress Property string[] IPAddress {get;}
A propriedade IPAddress para cada adaptador de rede é, na verdade, uma matriz. As chaves na definição indicam que IPAddress não é um valor System.String, mas uma matriz de valores System.String.
Listando dados de configuração de IP
Para exibir dados detalhados de configuração de IP para cada adaptador de rede, use o seguinte comando:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true
A exibição padrão do objeto de configuração do adaptador de rede é um conjunto muito reduzido das informações disponíveis. Para inspeção detalhada e solução de problemas, use Select-Object
ou um cmdlet de formatação, como Format-List
, para especificar as propriedades a serem exibidas.
Em redes TCP/IP modernas, você provavelmente não está interessado em propriedades IPX ou WINS. Você pode usar o parâmetro ExcludeProperty de Select-Object
para ocultar propriedades com nomes que começam com "WINS" ou "IPX".
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
Select-Object -ExcludeProperty IPX*,WINS*
Esse comando retorna informações detalhadas sobre DHCP, DNS, roteamento e outras propriedades de configuração de IP secundárias.
Executando ping em computadores
Você pode executar um ping simples em um computador usando Win32_PingStatus. O comando a seguir executa o ping, mas retorna uma saída longa:
Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'"
A resposta de Win32_PingStatus contém 29 propriedades. Você pode usar Format-Table
para selecionar as propriedades mais interessantes para você. O parâmetro Dimensionamento Automático de Format-Table
redimensiona as colunas da tabela para que sejam exibidas corretamente no PowerShell.
Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'" |
Format-Table -Property Address,ResponseTime,StatusCode -Autosize
Address ResponseTime StatusCode
------- ------------ ----------
127.0.0.1 0 0
Um StatusCode de 0 indica um ping bem-sucedido.
Você pode usar uma matriz para executar ping em vários computadores com um único comando. Como há mais de um endereço, use a ForEach-Object
para executar ping em cada endereço separadamente:
'127.0.0.1','localhost','bing.com' |
ForEach-Object -Process {
Get-CimInstance -Class Win32_PingStatus -Filter ("Address='$_'") |
Select-Object -Property Address,ResponseTime,StatusCode
}
Você pode usar o mesmo formato de comando para executar ping em todos os endereços em uma sub-rede, como uma rede privada que usa o número de rede 192.168.1.0 e uma máscara de sub-rede classe C padrão (255.255.255.0)., Somente os endereços no intervalo de 192.168.1.1 a 192.168.1.254 são endereços locais legítimos (0 é sempre reservado para o número de rede e 255 é um endereço de transmissão de sub-rede).
Para representar uma matriz dos números de 1 a 254 no PowerShell, use a expressão 1..254
.
Um ping de sub-rede completo pode ser executado adicionando cada valor no intervalo a um endereço parcial na instrução ping:
1..254| ForEach-Object -Process {
Get-CimInstance -Class Win32_PingStatus -Filter ("Address='192.168.1.$_'") } |
Select-Object -Property Address,ResponseTime,StatusCode
Observe que essa técnica para gerar um intervalo de endereços também pode ser usada em outro lugar. Você pode gerar um conjunto completo de endereços dessa maneira:
$ips = 1..254 | ForEach-Object -Process {'192.168.1.' + $_}
Recuperando propriedades do adaptador de rede
Anteriormente, mencionamos que você poderia recuperar propriedades gerais de configuração usando a classe Win32_NetworkAdapterConfiguration. Embora não sejam estritamente informações TCP/IP, informações do adaptador de rede, como endereços MAC e tipos de adaptador, podem ser úteis para entender o que está acontecendo com um computador. Para obter um resumo dessas informações, use o seguinte comando:
Get-CimInstance -Class Win32_NetworkAdapter -ComputerName .
Atribuindo o domínio DNS a um adaptador de rede
Para atribuir o domínio DNS à resolução automática de nomes, use o método SetDNSDomain do Win32_NetworkAdapterConfiguration. O parâmetro Query de Invoke-CimMethod
usa uma cadeia de caracteres de consulta WQL. O cmdlet chama o método especificado em cada instância retornada pela consulta.
$wql = 'SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True'
$args = @{ DnsDomain = 'fabrikam.com'}
Invoke-CimMethod -MethodName SetDNSDomain -Arguments $args -Query $wql
A filtragem em IPEnabled=True
é necessária, pois mesmo em uma rede que usa apenas TCP/IP, várias das configurações do adaptador de rede em um computador não são verdadeiros adaptadores TCP/IP. são elementos gerais de software que dão suporte a RAS, VPN, QoS e outros serviços para todos os adaptadores e, portanto, não têm um endereço próprio.
Executando tarefas de configuração de DHCP
Modificar detalhes do DHCP envolve trabalhar com um conjunto de adaptadores de rede, assim como a configuração de DNS faz. Há várias ações distintas que você pode executar usando o WMI.
Localizando adaptadores habilitados para DHCP
Para localizar os adaptadores habilitados para DHCP em um computador, use o seguinte comando:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=$true"
Para excluir adaptadores com problemas de configuração de IP, você pode recuperar apenas adaptadores habilitados para IP:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true and DHCPEnabled=$true"
Recuperando propriedades DHCP
Como as propriedades relacionadas a DHCP para um adaptador geralmente começam com DHCP
, você pode usar o parâmetro Propriedade de Format-Table
para exibir apenas essas propriedades:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true and DHCPEnabled=$true" |
Format-Table -Property DHCP*
Habilitando o DHCP em cada adaptador
Para habilitar o DHCP em todos os adaptadores, use o seguinte comando:
$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE IPEnabled=True and DHCPEnabled=False'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql
Usar a instrução de filtro IPEnabled=True and DHCPEnabled=False
evita habilitar o DHCP onde ele já está habilitado.
Liberando e renovando concessões DHCP em adaptadores específicos
As instâncias da classe Win32_NetworkAdapterConfiguration têm métodos ReleaseDHCPLease
e RenewDHCPLease
. Ambos são usados da mesma maneira. Em geral, use esses métodos se você precisar liberar ou renovar endereços para um adaptador em uma sub-rede específica. A maneira mais fácil de filtrar adaptadores em uma sub-rede é escolher apenas as configurações do adaptador que usam o gateway para essa sub-rede. Por exemplo, o comando a seguir libera todas as concessões DHCP em adaptadores no computador local que estão obtendo concessões DHCP de 192.168.1.254:
$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql
A única alteração para renovar uma concessão DHCP é usar o método RenewDHCPLease
em vez do método ReleaseDHCPLease
:
$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName RenewDHCPLease -Query $wql
Nota
Ao usar esses métodos em um computador remoto, lembre-se de que você pode perder o acesso ao sistema remoto se estiver conectado a ele por meio do adaptador com a concessão liberada ou renovada.
Liberando e renovando concessões DHCP em todos os adaptadores
Você pode realizar liberações de endereços DHCP globais ou renovações para todos os adaptadores usando os métodos Win32_NetworkAdapterConfiguration, ReleaseDHCPLeaseAll
e RenewDHCPLeaseAll
.
No entanto, o comando deve se aplicar à classe WMI, em vez de a um adaptador específico, porque liberar e renovar concessões globalmente é executado na classe, não em um adaptador específico. O cmdlet Invoke-CimMethod
pode chamar os métodos de uma classe.
Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName ReleaseDHCPLeaseAll
Você pode usar o mesmo formato de comando para invocar o método RenewDHCPLeaseAll:
Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName RenewDHCPLeaseAll
Criando um compartilhamento de rede
Para criar um compartilhamento de rede, use o método Create
de Win32_Share:
Invoke-CimMethod -ClassName Win32_Share -MethodName Create -Arguments @{
Path = 'C:\temp'
Name = 'TempShare'
Type = [uint32]0 #Disk Drive
MaximumAllowed = [uint32]25
Description = 'test share of the temp folder'
}
Isso é equivalente ao seguinte comando net share
no Windows:
net share tempshare=c:\temp /users:25 /remark:"test share of the temp folder"
Para chamar um método de uma classe WMI que usa parâmetros, você deve saber quais parâmetros estão disponíveis e os tipos desses parâmetros. Por exemplo, você pode listar os métodos do Win32_Class com os seguintes comandos:
(Get-CimClass -ClassName Win32_Share).CimClassMethods
Name ReturnType Parameters Qualifiers
---- ---------- ---------- ----------
Create UInt32 {Access, Description, MaximumAllowed, Name…} {Constructor, Implemented, MappingStrings, Stati…
SetShareInfo UInt32 {Access, Description, MaximumAllowed} {Implemented, MappingStrings}
GetAccessMask UInt32 {} {Implemented, MappingStrings}
Delete UInt32 {} {Destructor, Implemented, MappingStrings}
Use o comando a seguir para listar os parâmetros do método Create
.
(Get-CimClass -ClassName Win32_Share).CimClassMethods['Create'].Parameters
Name CimType Qualifiers ReferenceClassName
---- ------- ---------- ------------------
Access Instance {EmbeddedInstance, ID, In, MappingStrings…}
Description String {ID, In, MappingStrings, Optional}
MaximumAllowed UInt32 {ID, In, MappingStrings, Optional}
Name String {ID, In, MappingStrings}
Password String {ID, In, MappingStrings, Optional}
Path String {ID, In, MappingStrings}
Type UInt32 {ID, In, MappingStrings}
Você também pode ler a documentação do método Create da classe Win32_Share.
Removendo um compartilhamento de rede
Você pode remover um compartilhamento de rede com Win32_Share, mas o processo é ligeiramente diferente da criação de um compartilhamento, pois você precisa recuperar a instância específica a ser removida, em vez da classe Win32_Share. O exemplo a seguir exclui o compartilhamento TempShare:
$wql = 'SELECT * from Win32_Share WHERE Name="TempShare"'
Invoke-CimMethod -MethodName Delete -Query $wql
Conectando uma unidade de rede acessível pelo Windows
O cmdlet New-PSDrive
pode criar um drive do PowerShell mapeado para um compartilhamento de rede.
New-PSDrive -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"
No entanto, as unidades criadas dessa maneira só estão disponíveis para a sessão do PowerShell em que são criadas. Para mapear uma unidade de disco disponível fora do PowerShell (ou para outras sessões do PowerShell), é necessário usar o parâmetro Persist.
New-PSDrive -Persist -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"
Nota
Unidades de rede mapeadas de forma persistente podem não estar disponíveis quando executadas em um contexto elevado. Esse é o comportamento padrão do UAC do Windows. Para obter mais informações, consulte o seguinte artigo: