Utför nätverksuppgifter
Det här exemplet gäller endast för Windows-plattformar.
Eftersom TCP/IP är det vanligaste nätverksprotokollet omfattar de flesta administrationsuppgifter för nätverksprotokoll på låg nivå TCP/IP. I det här avsnittet använder vi PowerShell och WMI för att utföra dessa uppgifter.
Lista IP-adresser för en dator
Använd följande kommando för att hämta alla IP-adresser som används på den lokala datorn:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
Select-Object -ExpandProperty IPAddress
Eftersom egenskapen IPAddress för ett Win32_NetworkAdapterConfiguration-objekt är en matris måste du använda parametern Select-Object
ExpandProperty för att se hela listan med adresser.
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
Med hjälp av cmdleten Get-Member
kan du se att egenskapen IPAddress är en matris:
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;}
Egenskapen IPAddress för varje nätverkskort är faktiskt en matris. Klammerparenteserna i definitionen anger att IPAddress inte är ett System.String-värde , utan en matris med System.String-värden .
Lista IP-konfigurationsdata
Om du vill visa detaljerade IP-konfigurationsdata för varje nätverkskort använder du följande kommando:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true
Standardvisningen för nätverkskortets konfigurationsobjekt är en mycket reducerad uppsättning tillgänglig information. För djupgående kontroll och felsökning använder Select-Object
du eller en formaterings-cmdlet, till exempel , för att ange de egenskaper som Format-List
ska visas.
I moderna TCP/IP-nätverk är du förmodligen inte intresserad av IPX- eller WINS-egenskaper. Du kan använda parametern Select-Object
ExcludeProperty för för att dölja egenskaper med namn som börjar med "WINS" eller "IPX".
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
Select-Object -ExcludeProperty IPX*,WINS*
Det här kommandot returnerar detaljerad information om DHCP, DNS, routning och andra mindre IP-konfigurationsegenskaper.
Pinga datorer
Du kan utföra en enkel ping mot en dator med hjälp av Win32_PingStatus. Följande kommando utför pingen, men returnerar långa utdata:
Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'"
Ett mer användbart formulär för sammanfattningsinformation en visning av egenskaperna Adress, ResponseTime och StatusCode, som genereras av följande kommando. Parametern Autosize för Format-Table
ändrar storlek på tabellkolumnerna så att de visas korrekt i 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
StatusCode 0 anger en lyckad ping.
Du kan använda en matris för att pinga flera datorer med ett enda kommando. Eftersom det finns fler än en adress använder du ForEach-Object
för att pinga varje adress separat:
'127.0.0.1','localhost','bing.com' |
ForEach-Object -Process {
Get-CimInstance -Class Win32_PingStatus -Filter ("Address='$_'") |
Select-Object -Property Address,ResponseTime,StatusCode
}
Du kan använda samma kommandoformat för att pinga alla adresser i ett undernät, till exempel ett privat nätverk som använder nätverksnummer 192.168.1.0 och en standardmask för klass C-undernät (255.255.255.0)., Endast adresser i intervallet 192.168.1.1 till 192.168.1.254 är legitima lokala adresser (0 är alltid reserverat för nätverksnumret och 255 är en undernätssändningsadress).
Om du vill representera en matris med talen från 1 till 254 i PowerShell använder du uttrycket 1..254
.
En fullständig ping för undernät kan utföras genom att lägga till varje värde i intervallet till en partiell adress i ping-instruktionen:
1..254| ForEach-Object -Process {
Get-CimInstance -Class Win32_PingStatus -Filter ("Address='192.168.1.$_'") } |
Select-Object -Property Address,ResponseTime,StatusCode
Observera att den här tekniken för att generera ett adressintervall också kan användas någon annanstans. Du kan generera en fullständig uppsättning adresser på det här sättet:
$ips = 1..254 | ForEach-Object -Process {'192.168.1.' + $_}
Hämtar egenskaper för nätverkskort
Tidigare nämnde vi att du kunde hämta allmänna konfigurationsegenskaper med hjälp av klassen Win32_NetworkAdapterConfiguration . Även om det inte är strikt TCP/IP-information kan nätverkskortsinformation som MAC-adresser och nätverkskorttyper vara användbar för att förstå vad som händer med en dator. Om du vill få en sammanfattning av den här informationen använder du följande kommando:
Get-CimInstance -Class Win32_NetworkAdapter -ComputerName .
Tilldela DNS-domänen för ett nätverkskort
Om du vill tilldela DNS-domänen för automatisk namnmatchning använder du metoden SetDNSDomain för Win32_NetworkAdapterConfiguration. Frågeparametern Invoke-CimMethod
för tar en WQL-frågesträng. Cmdleten anropar den metod som anges för varje instans som returneras av frågan.
$wql = 'SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True'
$args = @{ DnsDomain = 'fabrikam.com'}
Invoke-CimMethod -MethodName SetDNSDomain -Arguments $args -Query $wql
Det krävs filtrering IPEnabled=True
eftersom flera av nätverkskortkonfigurationerna på en dator inte är sanna TCP/IP-kort även i ett nätverk som endast använder TCP/IP. de är allmänna programvaruelement som stöder RAS, VPN, QoS och andra tjänster för alla kort och har därför ingen egen adress.
Utföra DHCP-konfigurationsuppgifter
Att ändra DHCP-information innebär att arbeta med en uppsättning nätverkskort, precis som DNS-konfigurationen gör. Det finns flera olika åtgärder som du kan utföra med hjälp av WMI.
Hitta DHCP-aktiverade kort
Använd följande kommando för att hitta DHCP-aktiverade kort på en dator:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=$true"
Om du vill undanta kort med IP-konfigurationsproblem kan du bara hämta IP-aktiverade kort:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true and DHCPEnabled=$true"
Hämtar DHCP-egenskaper
Eftersom DHCP-relaterade egenskaper för ett kort vanligtvis börjar med DHCP
kan du använda egenskapsparametern Format-Table
för för att endast visa dessa egenskaper:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true and DHCPEnabled=$true" |
Format-Table -Property DHCP*
Aktivera DHCP på varje kort
Om du vill aktivera DHCP på alla kort använder du följande kommando:
$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE IPEnabled=True and DHCPEnabled=False'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql
Med filtersatsen IPEnabled=True and DHCPEnabled=False
undviker du aktivering av DHCP där den redan är aktiverad.
Frigöra och förnya DHCP-lån på specifika kort
Instanser av klassen Win32_NetworkAdapterConfiguration har ReleaseDHCPLease
och RenewDHCPLease
metoder. Båda används på samma sätt. I allmänhet använder du dessa metoder om du bara behöver frigöra eller förnya adresser för ett kort i ett visst undernät. Det enklaste sättet att filtrera kort i ett undernät är att bara välja de adapterkonfigurationer som använder gatewayen för det undernätet. Följande kommando släpper till exempel alla DHCP-lån på kort på den lokala datorn som hämtar DHCP-lån från 192.168.1.254:
$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql
Den enda ändringen för att förnya ett DHCP-lån är att använda RenewDHCPLease
metoden i stället för ReleaseDHCPLease
metoden:
$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName RenewDHCPLease -Query $wql
Kommentar
När du använder dessa metoder på en fjärrdator bör du vara medveten om att du kan förlora åtkomsten till fjärrsystemet om du är ansluten till den via adaptern med det frisläppta eller förnyade lånet.
Frigöra och förnya DHCP-lån på alla kort
Du kan utföra globala DHCP-adressutgåvor eller förnyelser på alla kort med hjälp av metoderna Win32_NetworkAdapterConfiguration ReleaseDHCPLeaseAll
och RenewDHCPLeaseAll
.
Kommandot måste dock gälla för WMI-klassen, i stället för ett visst kort, eftersom frigörande och förnyelse av lån globalt utförs på klassen, inte på ett specifikt kort. Cmdleten Invoke-CimMethod
kan anropa metoderna för en klass.
Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName ReleaseDHCPLeaseAll
Du kan använda samma kommandoformat för att anropa metoden RenewDHCPLeaseAll :
Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName RenewDHCPLeaseAll
Skapa en nätverksresurs
Om du vill skapa en nätverksresurs använder du Create
metoden 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'
}
Detta motsvarar följande net share
kommando i Windows:
net share tempshare=c:\temp /users:25 /remark:"test share of the temp folder"
Om du vill anropa en metod för en WMI-klass som tar parametrar måste du veta vilka parametrar som är tillgängliga och vilka typer av dessa parametrar. Du kan till exempel lista metoderna för Win32_Class med följande kommandon:
(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}
Använd följande kommando för att visa en lista över parametrarna för Create
metoden.
(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}
Du kan också läsa dokumentationen för create-metoden för klassen Win32_Share .
Ta bort en nätverksresurs
Du kan ta bort en nätverksresurs med Win32_Share, men processen skiljer sig något från att skapa en resurs eftersom du måste hämta den specifika instansen som ska tas bort i stället för klassen Win32_Share . I följande exempel tas resursen TempShare bort:
$wql = 'SELECT * from Win32_Share WHERE Name="TempShare"'
Invoke-CimMethod -MethodName Delete -Query $wql
Anslut en Windows-tillgänglig nätverksenhet
Cmdleten New-PSDrive
kan skapa en PowerShell-enhet som mappas till en nätverksresurs.
New-PSDrive -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"
Enheter som skapas på det här sättet är dock bara tillgängliga för PowerShell-session där de skapas. Om du vill mappa en enhet som är tillgänglig utanför PowerShell (eller till andra PowerShell-sessioner) måste du använda parametern Persist .
New-PSDrive -Persist -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"
Kommentar
Beständigt mappade enheter kanske inte är tillgängliga när de körs i en upphöjd kontext. Det här är standardbeteendet för Windows UAC. Mer information finns i följande artikel: