Ağ görevleri gerçekleştirme

Bu örnek yalnızca Windows platformları için geçerlidir.

TCP/IP en yaygın kullanılan ağ protokolü olduğundan, alt düzey ağ protokolü yönetim görevlerinin çoğu TCP/IP içerir. Bu bölümde, bu görevleri gerçekleştirmek için PowerShell ve WMI kullanacağız.

Bir bilgisayarın IP adreslerini listeleme

Yerel bilgisayarda kullanımda olan tüm IP adreslerini almak için aşağıdaki komutu kullanın:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
    Select-Object -ExpandProperty IPAddress

Win32_NetworkAdapterConfiguration nesnesinin IPAddress özelliği bir dizi olduğundan, adres listesinin tamamını görmek için öğesinin ExpandProperty parametresini Select-Object kullanmanız gerekir.

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

cmdlet'ini Get-Member kullanarak IPAddress özelliğinin bir dizi olduğunu görebilirsiniz:

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;}

Her ağ bağdaştırıcısı için IPAddress özelliği aslında bir dizidir. Tanımdaki ayraçlar, IPAddress'in bir System.String değeri değil, system.string değerleri dizisi olduğunu gösterir.

IP yapılandırma verilerini listeleme

Her ağ bağdaştırıcısının ayrıntılı IP yapılandırma verilerini görüntülemek için aşağıdaki komutu kullanın:

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

Ağ bağdaştırıcısı yapılandırma nesnesi için varsayılan görüntü, kullanılabilir bilgilerin çok azaltılmış bir kümesidir. Ayrıntılı inceleme ve sorun giderme için, görüntülenecek özellikleri belirtmek için veya gibi Format-Listbir biçimlendirme cmdlet'ini kullanınSelect-Object.

Modern TCP/IP ağlarında büyük olasılıkla IPX veya WINS özellikleriyle ilgilenmezsiniz. "WINS" veya "IPX" ile başlayan adlarla özellikleri gizlemek için excludeproperty parametresini Select-Object kullanabilirsiniz.

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

Bu komut DHCP, DNS, yönlendirme ve diğer ikincil IP yapılandırma özellikleri hakkında ayrıntılı bilgi döndürür.

Bilgisayarlara ping atma

Win32_PingStatus kullanarak bir bilgisayarda basit bir ping gerçekleştirebilirsiniz. Aşağıdaki komut ping işlemini gerçekleştirir, ancak uzun çıkış döndürür:

Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'"

Özet bilgiler için, aşağıdaki komut tarafından oluşturulan Address, ResponseTime ve StatusCode özelliklerinin görüntülenmesi için daha kullanışlı bir form. parametresi, Format-Table tablo sütunlarını PowerShell'de düzgün görüntülenecek şekilde yeniden boyutlandırır.

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

0 StatusCode başarılı bir ping olduğunu gösterir.

Tek bir komutla birden çok bilgisayara ping göndermek için bir dizi kullanabilirsiniz. Birden fazla adres olduğundan, her adrese ayrı ping göndermek için komutunu ForEach-Object kullanın:

'127.0.0.1','localhost','bing.com' |
  ForEach-Object -Process {
    Get-CimInstance -Class Win32_PingStatus -Filter ("Address='$_'") |
      Select-Object -Property Address,ResponseTime,StatusCode
  }

192.168.1.0 ağ numarası ve standart C Sınıfı alt ağ maskesi (255.255.255.0) kullanan özel ağ gibi bir alt ağdaki tüm adreslere ping göndermek için aynı komut biçimini kullanabilirsiniz. Yalnızca 192.168.1.1 ile 192.168.1.254 aralığındaki adresler geçerli yerel adreslerdir (0 her zaman ağ numarası için ayrılmıştır ve 255 bir alt ağ yayın adresidir).

PowerShell'de 1 ile 254 arasında bir sayı dizisini temsil etmek için ifadesini 1..254kullanın. Aralıktaki her bir değer ping deyimindeki kısmi bir adrese eklenerek tam bir alt ağ ping'i gerçekleştirilebilir:

1..254| ForEach-Object -Process {
  Get-CimInstance -Class Win32_PingStatus -Filter ("Address='192.168.1.$_'") } |
    Select-Object -Property Address,ResponseTime,StatusCode

Bir adres aralığı oluşturmaya yönelik bu tekniğin başka bir yerde de kullanılabileceğini unutmayın. Bu şekilde tam bir adres kümesi oluşturabilirsiniz:

$ips = 1..254 | ForEach-Object -Process {'192.168.1.' + $_}

Ağ bağdaştırıcısı özelliklerini alma

Daha önce, Win32_NetworkAdapterConfiguration sınıfını kullanarak genel yapılandırma özelliklerini alabileceğinizden bahsetmiştik. Tcp/IP bilgileri tam olarak olmasa da, MAC adresleri ve bağdaştırıcı türleri gibi ağ bağdaştırıcısı bilgileri, bilgisayarda neler olduğunu anlamak için yararlı olabilir. Bu bilgilerin özetini almak için aşağıdaki komutu kullanın:

Get-CimInstance -Class Win32_NetworkAdapter -ComputerName .

Ağ bağdaştırıcısı için DNS etki alanı atama

DNS etki alanını otomatik ad çözümlemesi için atamak için Win32_NetworkAdapterConfiguration SetDNSDomain yöntemini kullanın. öğesinin Invoke-CimMethod Query parametresi bir WQL sorgu dizesi alır. cmdlet'i sorgu tarafından döndürülen her örnekte belirtilen yöntemi çağırır.

$wql = 'SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True'
$args = @{ DnsDomain = 'fabrikam.com'}
Invoke-CimMethod -MethodName SetDNSDomain -Arguments $args -Query $wql

IPEnabled=True Yalnızca TCP/IP kullanan bir ağda bile bilgisayardaki ağ bağdaştırıcısı yapılandırmalarının birkaçı gerçek TCP/IP bağdaştırıcıları olmadığından filtreleme gereklidir. tüm bağdaştırıcılar için RAS, VPN, QoS ve diğer hizmetleri destekleyen genel yazılım öğeleridir ve bu nedenle kendi adresleri yoktur.

DHCP yapılandırma görevlerini gerçekleştirme

DHCP ayrıntılarını değiştirmek, DNS yapılandırmasında olduğu gibi bir dizi ağ bağdaştırıcısıyla çalışmayı içerir. WMI kullanarak gerçekleştirebileceğiniz birkaç farklı eylem vardır.

DHCP özellikli bağdaştırıcıları bulma

Bir bilgisayarda DHCP özellikli bağdaştırıcıları bulmak için aşağıdaki komutu kullanın:

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

IP yapılandırma sorunları olan bağdaştırıcıları dışlamak için yalnızca IP özellikli bağdaştırıcıları alabilirsiniz:

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

DHCP özelliklerini alma

Bir bağdaştırıcının DHCP ile ilgili özellikleri genellikle ile DHCPbaşladığından, özelliği parametresini Format-Table kullanarak yalnızca şu özellikleri görüntüleyebilirsiniz:

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

Her bağdaştırıcıda DHCP'yi etkinleştirme

DHCP'yi tüm bağdaştırıcılarda etkinleştirmek için aşağıdaki komutu kullanın:

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

Filtre deyiminin IPEnabled=True and DHCPEnabled=False kullanılması, DHCP'nin zaten etkin olduğu yerde etkinleştirilmesini önler.

Belirli bağdaştırıcılarda DHCP kiralarını serbest bırakma ve yenileme

Win32_NetworkAdapterConfiguration sınıfının örnekleri ve RenewDHCPLease yöntemlerine sahiptirReleaseDHCPLease. Her ikisi de aynı şekilde kullanılır. Genel olarak, bu yöntemleri yalnızca belirli bir alt ağdaki bir bağdaştırıcının adreslerini serbest bırakmanız veya yenilemeniz gerekiyorsa kullanın. Bir alt ağ üzerindeki bağdaştırıcıları filtrelemenin en kolay yolu, yalnızca söz konusu alt ağ için ağ geçidini kullanan bağdaştırıcı yapılandırmalarını seçmektir. Örneğin, aşağıdaki komut 192.168.1.254'ten DHCP kiraları alan yerel bilgisayardaki bağdaştırıcılardaki tüm DHCP kiralarını serbest bırakır:

$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql

DHCP kirasını yenilemek için tek değişiklik yöntemi yerine ReleaseDHCPLease yöntemini kullanmaktırRenewDHCPLease:

$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName RenewDHCPLease -Query $wql

Not

Bu yöntemleri uzak bir bilgisayarda kullanırken, serbest bırakılan veya yenilenen kira ile bağdaştırıcı aracılığıyla bağlıysanız uzak sisteme erişiminizi kaybedebileceğinizi unutmayın.

Tüm bağdaştırıcılarda DHCP kiralarını serbest bırakma ve yenileme

ve Win32_NetworkAdapterConfiguration yöntemlerini kullanarak tüm bağdaştırıcılarda genel DHCP adresi yayınları veya yenilemeleri ReleaseDHCPLeaseAllRenewDHCPLeaseAllgerçekleştirebilirsiniz. Ancak, kiraları genel olarak serbest bırakma ve yenileme işlemi belirli bir bağdaştırıcıda değil, sınıfta gerçekleştirildiğinden, komutun belirli bir bağdaştırıcı yerine WMI sınıfına uygulanması gerekir. cmdlet'i Invoke-CimMethod bir sınıfın yöntemlerini çağırabilir.

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName ReleaseDHCPLeaseAll

RenewDHCPLeaseAll yöntemini çağırmak için aynı komut biçimini kullanabilirsiniz:

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName RenewDHCPLeaseAll

Ağ paylaşımı oluşturma

Ağ paylaşımı oluşturmak için Win32_Share yöntemini kullanınCreate:

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'
}

Bu, Windows'ta aşağıdaki net share komutla eşdeğerdir:

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

Parametreleri alan bir WMI sınıfının yöntemini çağırmak için hangi parametrelerin kullanılabilir olduğunu ve bu parametrelerin türlerini bilmeniz gerekir. Örneğin, Win32_Class yöntemlerini aşağıdaki komutlarla listeleyebilirsiniz:

(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}

Yönteminin parametrelerini Create listelemek için aşağıdaki komutu kullanın.

(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}

ayrıca Win32_Share sınıfının Create yönteminin belgelerini de okuyabilirsiniz.

Ağ paylaşımını kaldırma

Win32_Share ile bir ağ paylaşımını kaldırabilirsiniz, ancak işlem, Win32_Share sınıfı yerine kaldırılacak belirli bir örneği almanız gerektiğinden paylaşım oluşturma işleminden biraz farklıdır. Aşağıdaki örnek TempShare paylaşımını siler:

$wql = 'SELECT * from Win32_Share WHERE Name="TempShare"'
Invoke-CimMethod -MethodName Delete -Query $wql

Windows tarafından erişilebilen bir ağ sürücüsü Bağlan

Cmdlet, New-PSDrive bir ağ paylaşımına eşlenmiş bir PowerShell sürücüsü oluşturabilir.

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

Ancak, bu şekilde oluşturulan sürücüler yalnızca oluşturuldukları PowerShell oturumunda kullanılabilir. PowerShell dışında (veya diğer PowerShell oturumlarıyla) kullanılabilen bir sürücüyü eşlemek için Persist parametresini kullanmanız gerekir.

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

Not

Yükseltilmiş bir bağlamda çalışırken kalıcı olarak eşlenmiş sürücüler kullanılamayabilir. Bu, Windows UAC'nin varsayılan davranışıdır. Daha fazla bilgi için aşağıdaki makaleyi inceleyin: