Ağ görevlerini gerçekleştirme


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

TCP/IP en sık kullanılan ağ protokolü olduğundan, düşük düzeyli ağ protokolü yönetim görevlerinin çoğu TCP/IP'yi içerir. Bu bölümde bu görevleri gerçekleştirmek için PowerShell ve WMI kullanıyoruz.

Bir bilgisayarın IP adreslerini listeleme

Yerel bilgisayarda tüm IP adreslerinin kullanılmasını sağlamak 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, Select-Object'in ExpandProperty parametresini kullanmanız gerekir. adres listesinin tamamını görmek için

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

Get-Member cmdlet'ini 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ının IPAddress özelliği aslında bir dizidir. Tanımdaki parantezler, IPAddress'in bir System.String değeri değil, System.String değerlerinden oluşan bir dizi 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 nesnesinin varsayılan ekranı, mevcut bilgilerin oldukça azaltılmış bir kümesidir. Ayrıntılı inceleme ve sorun giderme amacıyla, görüntülenecek özellikleri belirtmek için Select-Object'i veya Format-List gibi bir biçimlendirme cmdlet'ini kullanın.

Modern TCP/IP ağlarında muhtemelen IPX veya WINS özellikleriyle ilgilenmiyorsunuz. "WINS" veya "IPX" ile başlayan adlara sahip özellikleri gizlemek için Select-Object'in ExcludeProperty parametresini kullanabilirsiniz.

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

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

Bilgisayarlara ping atılıyor

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

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

Özet bilgi için daha kullanışlı bir form, aşağıdaki komut tarafından oluşturulan Adres, Yanıt Süresi ve StatusCode özelliklerinin görüntülenmesidir. Format-Table'ın Otomatik Boyutlandırma parametresi, 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

StatusCode'un 0 olması başarılı bir ping'i gösterir.

Tek bir komutla birden fazla bilgisayara ping işlemi yapmak için bir dizi kullanabilirsiniz. Birden fazla adres olduğundan, her adrese ayrı ayrı ping işlemi yapmak için ForEach-Object komutunu 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ını ve standart C Sınıfı alt ağ maskesini (255.255.255.0) kullanan özel bir ağ gibi bir alt ağdaki tüm adreslere ping işlemi yapmak için aynı komut biçimini kullanabilirsiniz. Yalnızca 192.168.1.0 aralığındaki adresler. 1.1 ila 192.168.1.254 arası meşru yerel adreslerdir (0 her zaman ağ numarası için ayrılmıştır ve 255 bir alt ağ yayın adresidir).

PowerShell'de 1'den 254'e kadar sayıların bir dizisini temsil etmek için 1..254 ifadesini kullanın. Aralıktaki her değerin ping ifadesindeki kısmi adrese eklenmesiyle tam bir alt ağ pingi 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 yerlerde de kullanılabileceğini unutmayın. Tam bir adres kümesini şu şekilde 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ğinizi belirtmiştik. Kesin olarak TCP/IP bilgisi olmasa da, MAC adresleri ve adaptör türleri gibi ağ bağdaştırıcısı bilgileri, bilgisayarda neler olup bittiğini anlamak için yararlı olabilir. Bu bilgilerin özetini almak için aşağıdaki komutu kullanın:

Get-CimInstance -Class Win32_NetworkAdapter -ComputerName .

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

Otomatik ad çözümlemesi için DNS alan adını atamak üzere Win32_NetworkAdapterConfiguration'un SetDNSDomain yöntemini kullanın. Invoke-CimMethod'un Query parametresi bir WQL sorgu dizesi alır. Cmdlet, sorgunun döndürdüğü 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

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

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

DHCP ayrıntılarını değiştirmek, tıpkı 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 bilgisayardaki 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ı hariç tutmak 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 DHCP ile başladığından, yalnızca bu özellikleri görüntülemek için Format-Table'ın Özellik parametresini kullanabilirsiniz:

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

Tüm bağdaştırıcılarda DHCP'yi 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

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

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

Win32_NetworkAdapterConfiguration sınıfının örnekleri ReleaseDHCPLease ve RenewDHCPLease yöntemlerine sahiptir. Her ikisi de aynı şekilde kullanılır. Genel olarak, yalnızca belirli bir alt ağdaki bağdaştırıcının adreslerini serbest bırakmanız veya yenilemeniz gerekiyorsa bu yöntemleri kullanın. Bir alt ağdaki bağdaştırıcıları filtrelemenin en kolay yolu, yalnızca o 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, yerel bilgisayardaki 192.168.1.254'ten DHCP kiralamaları alan bağdaştırıcılardaki tüm DHCP kiralamaları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ı yenilemeye ilişkin tek değişiklik, ReleaseDHCPLease yöntemi yerine RenewDHCPLease yöntemini kullanmaktır:

$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, kira sözleşmesi serbest bırakılmış veya yenilenmiş bir adaptör aracılığıyla uzak sisteme bağlanırsanız, uzak sisteme erişiminizi kaybedebileceğinizi unutmayın.

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

Win32_NetworkAdapterConfiguration yöntemlerini, ReleaseDHCPLeaseAll ve RenewDHCPLeaseAll'i kullanarak tüm bağdaştırıcılarda genel DHCP adresi yayınlarını veya yenilemelerini gerçekleştirebilirsiniz. Ancak, kiralamaların serbest bırakılması ve yenilenmesi 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. Invoke-CimMethod cmdlet'i 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

Bir ağ paylaşımı oluşturmak için Win32_Share'in Create yöntemini kullanın:

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 komutuna eşdeğerdir:

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

Parametre alan bir WMI sınıfı yöntemini çağırmak için hangi parametrelerin mevcut olduğunu ve bu parametrelerin türlerini bilmeniz gerekir. Örneğin, Win32_Class'ın 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}

Create yönteminin parametrelerini 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öntemine ilişkin belgeleri de okuyabilirsiniz.

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

Win32_Share ile bir ağ paylaşımını kaldırabilirsiniz ancak işlem, paylaşım oluşturmaktan biraz farklıdır çünkü Win32_Share yerine kaldırılacak belirli örneği almanız gerekir. sınıf. 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ünü bağlama

New-PSDrive cmdlet'i, bir ağ paylaşımına eşlenen 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 kullanılabilen bir sürücüyü (veya diğer PowerShell oturumlarıyla) eşlemek için Persist parametresini kullanmanız gerekir.

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

Not

Kalıcı olarak eşlenen sürücüler, yükseltilmiş bir bağlamda çalıştırıldığında kullanılamayabilir. Bu, Windows UAC'nin varsayılan davranışıdır. Daha fazla bilgi için aşağıdaki makaleye bakın:

  • UAC, kimlik bilgilerini soracak şekilde yapılandırıldığında, eşlenen sürücüler yükseltilmiş bir istemden kullanılamaz

İlgili makaleler