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: