Netwerktaken uitvoeren

Omdat TCP/IP het meest gebruikte netwerkprotocol is, hebben de meeste beheertaken voor netwerkprotocollen 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 in een lijst bekijken

Gebruik de volgende opdracht om alle IP-adressen op te halen die in gebruik zijn op de lokale computer:

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 ExpandProperty van gebruiken om de volledige lijst met Select-Object 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 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 in feite 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 bekijken

Als u gedetailleerde IP-configuratiegegevens voor elke netwerkadapter wilt weergeven, gebruikt u de volgende opdracht:

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

De standaardweergave voor het configuratieobject van de netwerkadapter is een zeer beperkte set beschikbare informatie. Gebruik voor diepgaande inspectie en probleemoplossing een opmaak-cmdlet, zoals , om de eigenschappen op te geven Select-Object Format-List 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 gebruiken om eigenschappen te verbergen met namen die Select-Object beginnen met WINS of IPX.

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

Deze opdracht retourneert gedetailleerde informatie 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 samenvattingsinformatie een weergave van de eigenschappen Address, ResponseTime en StatusCode, zoals gegenereerd door de volgende opdracht. Met de parameter Autosize van worden de tabelkolommen zo groot gemaakt Format-Table dat 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 duidt op een geslaagde ping.

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 computers in een subnet te pingen, zoals een particulier netwerk dat gebruikmaakt van netwerknummer 192.168.1.0 en een standaard C-subnetmasker van klasse (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 broadcastadres van een subnet).

Als u een matrix van de getallen van 1 tot en met 254 in PowerShell wilt vertegenwoordigen, 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 nuttig zijn om te begrijpen wat er gebeurt met een computer. 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 naamresolutie, gebruikt u de methode SetDNSDomain van de Win32_NetworkAdapterConfiguration. De queryparameter van Invoke-CimMethod neemt een WQL-queryreeks. 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 is nodig, omdat zelfs in een netwerk dat alleen TCP/IP gebruikt, verschillende van de netwerkadapterconfiguraties op een computer niet IPEnabled=True waar TCP/IP-adapters zijn. Ze zijn algemene software-elementen die ondersteuning bieden voor RAS, VPN, QoS en andere services voor alle adapters en hebben dus geen eigen adres.

DHCP-configuratietaken uitvoeren

Het wijzigen van DHCP-details omvat het werken met een set netwerkadapters, net zoals bij de DNS-configuratie. Er zijn verschillende verschillende acties die u kunt uitvoeren met WMI en we nemen een aantal algemene acties door.

De DHCP-Enabled bepalen

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 IP-adapters ophalen:

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

DHCP-eigenschappen ophalen

Omdat DHCP-gerelateerde eigenschappen voor een adapter doorgaans beginnen met , kunt u de eigenschapsparameter van gebruiken om DHCP alleen deze eigenschappen weer te Format-Table geven:

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

DHCP inschakelen op elke adapter

Als u DHCP op alle adapters wilt inschakelen, gebruikt u de volgende opdracht:

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

Als u de filter-instructie IPEnabled=True and DHCPEnabled=False gebruikt, wordt voorkomen dat DHCP wordt ingeschakeld wanneer deze al is ingeschakeld.

DHCP-leases vrijgeven en vernieuwen op specifieke adapters

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

$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 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 er via de adapter mee verbonden bent met de vrijgegeven of vernieuwde 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 en ReleaseDHCPLeaseAll RenewDHCPLeaseAll . De opdracht moet echter van toepassing zijn op de WMI-klasse in plaats van op een bepaalde adapter, omdat het vrijgeven en vernieuwen van leases globaal 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 netwerk share maken

Als u een netwerk share wilt maken, gebruikt u Create de 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 is gelijk aan de volgende net share opdracht op Windows:

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

Als u een methode van een WMI-klasse wilt aanroepen die parameters gebruikt, moet u weten welke parameters beschikbaar zijn en welke typen parameters er zijn. U kunt bijvoorbeeld de methoden van de Win32_Class 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 weer te Create 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 Methode maken van de Win32_Share lezen.

Een netwerk share verwijderen

U kunt een netwerk share met Win32_Share verwijderen, maar het proces verschilt iets 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 Windows toegankelijk netwerkstation

De New-PSDrive cmdlet kan een PowerShell-station maken dat is toe te staan aan een netwerk share.

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 dat buiten PowerShell beschikbaar is (of aan andere PowerShell-sessies), moet u de parameter Persist gebruiken.

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

Notitie

Permanent toe te wijsstations zijn mogelijk niet beschikbaar wanneer ze worden uitgevoerd in een context met verhoogde niveaus. Dit is het standaardgedrag van Windows UAC. Raadpleeg voor meer informatie hete volgende artikel: