Delen via


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

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

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 cmdlet Get-Member ziet u 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 van 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 voor uitgebreide inspectie en probleemoplossing Select-Object of een opmaak-cmdlet, zoals Format-List, om de eigenschappen op te geven die moeten worden weergegeven.

In moderne TCP/IP-netwerken bent u waarschijnlijk niet geïnteresseerd in IPX- of WINS-eigenschappen. U kunt de parameter excludeProperty van Select-Object 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.

Het pingen van computers

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'"

Het antwoord van Win32_PingStatus bevat 29 eigenschappen. U kunt Format-Table gebruiken om de eigenschappen te selecteren die het interessantst voor u zijn. De Autosize-parameter van Format-Table wijzigt de grootte van de tabelkolommen, zodat ze 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 de 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

Eerder hebben we 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 parameter Query van Invoke-CimMethod gebruikt 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

Filteren op IPEnabled=True is nodig, omdat zelfs in een netwerk dat uitsluitend op basis van TCP/IP werkt, verschillende netwerkadapterconfiguraties op een computer niet echt 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-ingeschakelde 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 met DHCP, kunt u de parameter Eigenschap van Format-Table gebruiken om alleen deze 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

Met behulp van de filterinstructie IPEnabled=True and DHCPEnabled=False wordt voorkomen dat DHCP wordt ingeschakeld waar deze al is ingeschakeld.

DHCP-leases vrijgeven en vernieuwen op specifieke adapters

Exemplaren van de klasse Win32_NetworkAdapterConfiguration hebben 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 methode RenewDHCPLease in plaats van de methode ReleaseDHCPLease:

$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 cmdlet Invoke-CimMethod 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 methode Create 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 lezen voor de Create-methode van de Win32_Share-klasse.

Een netwerkshare verwijderen

U kunt een netwerkshare met Win32_Shareverwijderen, 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 share TempShare-verwijderd:

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

Verbinding maken met een Windows-toegankelijk netwerkstation

De cmdlet New-PSDrive kan een PowerShell-station maken dat is gekoppeld aan een netwerkdeling.

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

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

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

Notitie

Persistent toegewezen netwerkschijven zijn mogelijk niet beschikbaar wanneer ze in een verhoogde gebruikerscontext draaien. Dit is het standaardgedrag van Windows UAC. Zie het volgende artikel voor meer informatie: