Netwerktaken uitvoeren

Dit voorbeeld is alleen van toepassing op Windows-platforms.

Omdat TCP/IP het meest gebruikte netwerkprotocol is, hebben de meeste beheertaken voor netwerkprotocol's op laag niveau betrekking op TCP/IP. In deze sectie gebruiken we PowerShell en WMI om deze taken uit te voeren.

IP-adressen voor een computer weergeven

Gebruik de volgende opdracht om alle IP-adressen op de lokale computer op te halen:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
    Select-Object -ExpandProperty IPAddress

Omdat de eigenschap IPAddress van een Win32_NetworkAdapterConfiguration-object een matrix is, moet u de parameter Select-Object ExpandProperty gebruiken om de volledige lijst met adressen weer te geven.

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

Met behulp van de Get-Member cmdlet kunt u zien dat de eigenschap IPAddress een matrix is:

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;}

De eigenschap IPAddress voor elke netwerkadapter is eigenlijk een matrix. De accolades in de definitie geven aan dat IPAddress geen System.String-waarde is, maar een matrix met System.String-waarden.

IP-configuratiegegevens weergeven

Gebruik de volgende opdracht om gedetailleerde IP-configuratiegegevens voor elke netwerkadapter weer te geven:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true

De standaardweergave voor het configuratieobject van de netwerkadapter is een zeer beperkte set van de beschikbare informatie. Gebruik of een opmaak-cmdlet, zoals Format-List, om de eigenschappen op te geven die moeten worden weergegeven voor uitgebreide inspectie en probleemoplossingSelect-Object.

In moderne TCP/IP-netwerken bent u waarschijnlijk niet geïnteresseerd in IPX- of WINS-eigenschappen. U kunt de parameter Select-Object ExcludeProperty gebruiken om eigenschappen te verbergen met namen die beginnen met WINS of IPX.

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
    Select-Object -ExcludeProperty IPX*,WINS*

Met deze opdracht wordt gedetailleerde informatie geretourneerd over DHCP, DNS, routering en andere secundaire IP-configuratie-eigenschappen.

Computers pingen

U kunt een eenvoudige ping uitvoeren op een computer met behulp van Win32_PingStatus. De volgende opdracht voert de ping uit, maar retourneert lange uitvoer:

Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'"

Een nuttiger formulier voor overzichtsinformatie een weergave van de eigenschappen Address, ResponseTime en StatusCode, zoals gegenereerd door de volgende opdracht. Met de parameter Automatisch aanpassen wordt de grootte van Format-Table de tabelkolommen aangepast, zodat deze correct worden weergegeven in 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

Een StatusCode van 0 geeft een geslaagde ping aan.

U kunt een matrix gebruiken om meerdere computers te pingen met één opdracht. Omdat er meer dan één adres is, gebruikt u het ForEach-Object om elk adres afzonderlijk te pingen:

'127.0.0.1','localhost','bing.com' |
  ForEach-Object -Process {
    Get-CimInstance -Class Win32_PingStatus -Filter ("Address='$_'") |
      Select-Object -Property Address,ResponseTime,StatusCode
  }

U kunt dezelfde opdrachtindeling gebruiken om alle adressen op een subnet te pingen, zoals een particulier netwerk dat gebruikmaakt van netwerknummer 192.168.1.0 en een standaard subnetmasker van klasse C (255.255.255.0)., Alleen adressen in het bereik van 192.168.1.1 tot en met 192.168.1.254 zijn legitieme lokale adressen (0 is altijd gereserveerd voor het netwerknummer en 255 is een subnetuitzendingsadres).

Als u een matrix van de getallen van 1 tot en met 254 in PowerShell wilt weergeven, gebruikt u de expressie 1..254. Een volledige subnet ping kan worden uitgevoerd door elke waarde in het bereik toe te voegen aan een gedeeltelijk adres in de ping-instructie:

1..254| ForEach-Object -Process {
  Get-CimInstance -Class Win32_PingStatus -Filter ("Address='192.168.1.$_'") } |
    Select-Object -Property Address,ResponseTime,StatusCode

Houd er rekening mee dat deze techniek voor het genereren van een bereik van adressen ook elders kan worden gebruikt. U kunt op deze manier een volledige set adressen genereren:

$ips = 1..254 | ForEach-Object -Process {'192.168.1.' + $_}

Eigenschappen van netwerkadapter ophalen

We hebben eerder gezegd dat u algemene configuratie-eigenschappen kunt ophalen met behulp van de Win32_NetworkAdapterConfiguration-klasse . Hoewel niet strikt TCP/IP-informatie, kunnen netwerkadaptergegevens, zoals MAC-adressen en adaptertypen, handig zijn om te begrijpen wat er met een computer gebeurt. Gebruik de volgende opdracht om een samenvatting van deze informatie op te halen:

Get-CimInstance -Class Win32_NetworkAdapter -ComputerName .

Het DNS-domein toewijzen voor een netwerkadapter

Als u het DNS-domein wilt toewijzen voor automatische naamomzetting, gebruikt u de methode SetDNSDomain van de Win32_NetworkAdapterConfiguration. De queryparameter van Invoke-CimMethod neemt een WQL-querytekenreeks. De cmdlet roept de methode aan die is opgegeven voor elk exemplaar dat door de query wordt geretourneerd.

$wql = 'SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True'
$args = @{ DnsDomain = 'fabrikam.com'}
Invoke-CimMethod -MethodName SetDNSDomain -Arguments $args -Query $wql

IPEnabled=True Filteren is noodzakelijk, omdat zelfs in een netwerk dat alleen GEBRUIKMAAKT van TCP/IP, verschillende configuraties van de netwerkadapter op een computer niet waar tcp/IP-adapters zijn. ze zijn algemene software-elementen die RAS, VPN, QoS en andere services ondersteunen voor alle adapters en dus geen eigen adres hebben.

DHCP-configuratietaken uitvoeren

Als u DHCP-gegevens wijzigt, moet u werken met een set netwerkadapters, net zoals de DNS-configuratie wel doet. Er zijn verschillende verschillende acties die u kunt uitvoeren met WMI.

DHCP-adapters zoeken

Gebruik de volgende opdracht om de DHCP-adapters op een computer te vinden:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=$true"

Als u adapters met IP-configuratieproblemen wilt uitsluiten, kunt u alleen ADAPTERS met IP-functionaliteit ophalen:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true and DHCPEnabled=$true"

DHCP-eigenschappen ophalen

Omdat DHCP-gerelateerde eigenschappen voor een adapter over het algemeen beginnen DHCP, kunt u de parameter Format-Table Eigenschap gebruiken om alleen die eigenschappen weer te geven:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter  "IPEnabled=$true and DHCPEnabled=$true" |
  Format-Table -Property DHCP*

DHCP inschakelen op elke adapter

Gebruik de volgende opdracht om DHCP op alle adapters in te schakelen:

$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE IPEnabled=True and DHCPEnabled=False'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql

Als u de filterinstructie IPEnabled=True and DHCPEnabled=False gebruikt, voorkomt u dat DHCP wordt ingeschakeld waar deze al is ingeschakeld.

DHCP-leases vrijgeven en vernieuwen op specifieke adapters

Exemplaren van de klasse Win32_NetworkAdapterConfiguration heeft ReleaseDHCPLease en RenewDHCPLease methoden. Beide worden op dezelfde manier gebruikt. In het algemeen kunt u deze methoden gebruiken als u alleen adressen voor een adapter op een specifiek subnet hoeft vrij te geven of te vernieuwen. De eenvoudigste manier om adapters op een subnet te filteren, is door alleen de adapterconfiguraties te kiezen die gebruikmaken van de gateway voor dat subnet. Met de volgende opdracht worden bijvoorbeeld alle DHCP-leases op adapters op de lokale computer uitgebracht die DHCP-leases verkrijgen van 192.168.1.254:

$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql

De enige wijziging voor het vernieuwen van een DHCP-lease is het gebruik van de RenewDHCPLease methode in plaats van de ReleaseDHCPLease methode:

$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName RenewDHCPLease -Query $wql

Notitie

Wanneer u deze methoden op een externe computer gebruikt, moet u er rekening mee houden dat u geen toegang meer hebt tot het externe systeem als u hiermee bent verbonden via de adapter met de vrijgegeven of verlengde lease.

DHCP-leases vrijgeven en vernieuwen op alle adapters

U kunt globale DHCP-adresreleases of -vernieuwingen uitvoeren op alle adapters met behulp van de Win32_NetworkAdapterConfiguration methoden, ReleaseDHCPLeaseAll en RenewDHCPLeaseAll. De opdracht moet echter van toepassing zijn op de WMI-klasse, in plaats van op een bepaalde adapter, omdat het wereldwijd vrijgeven en vernieuwen van leases wordt uitgevoerd op de klasse, niet op een specifieke adapter. De Invoke-CimMethod cmdlet kan de methoden van een klasse aanroepen.

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName ReleaseDHCPLeaseAll

U kunt dezelfde opdrachtindeling gebruiken om de methode RenewDHCPLeaseAll aan te roepen:

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName RenewDHCPLeaseAll

Een netwerkshare maken

Als u een netwerkshare wilt maken, gebruikt u de Create methode van 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'
}

Dit komt overeen met de volgende net share opdracht in Windows:

net share tempshare=c:\temp /users:25 /remark:"test share of the temp folder"

Als u een methode wilt aanroepen van een WMI-klasse die parameters gebruikt, moet u weten welke parameters beschikbaar zijn en de typen van deze parameters. U kunt bijvoorbeeld de methoden van de Win32_Class weergeven met de volgende opdrachten:

(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}

Gebruik de volgende opdracht om de parameters van de Create methode weer te geven.

(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}

U kunt ook de documentatie voor de methode Maken van de Win32_Share-klasse lezen.

Een netwerkshare verwijderen

U kunt een netwerkshare verwijderen met Win32_Share, maar het proces verschilt enigszins van het maken van een share, omdat u het specifieke exemplaar moet ophalen dat moet worden verwijderd, in plaats van de Win32_Share-klasse . In het volgende voorbeeld wordt de TempShare-share verwijderd:

$wql = 'SELECT * from Win32_Share WHERE Name="TempShare"'
Invoke-CimMethod -MethodName Delete -Query $wql

Verbinding maken van een windows-toegankelijk netwerkstation

De New-PSDrive cmdlet kan een PowerShell-station maken dat is toegewezen aan een netwerkshare.

New-PSDrive -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"

Stations die op deze manier zijn gemaakt, zijn echter alleen beschikbaar voor een PowerShell-sessie waarin ze worden gemaakt. Als u een station wilt toewijzen dat beschikbaar is buiten PowerShell (of aan andere PowerShell-sessies), moet u de parameter Persistent gebruiken.

New-PSDrive -Persist -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"

Notitie

Permanent toegewezen stations zijn mogelijk niet beschikbaar wanneer ze worden uitgevoerd in een verhoogde context. Dit is het standaardgedrag van Windows UAC. Zie het volgende artikel voor meer informatie: