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: