Dela via


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-Listska 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 DHCPkan 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: