Ağ Görevleri Gerçekleştirme

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 için 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

Bir Win32_NetworkAdapterConfiguration nesnesinin IPAddress özelliği bir dizi olduğu için, adres listesinin tamamını görmek için ExpandProperty Select-Object parametresini kullanabilirsiniz.

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-Membercmdlet'ini kullanarak IPAddress özelliğinin bir dizi olduğunu görüyorsunuz:

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ımda yer alan 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ına ilişkin 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 ekran, 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 bir biçimlendirme Select-Object cmdlet'i Format-List kullanın.

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 Select-Object 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 Atma

komutunu kullanarak bir bilgisayara karşı basit bir ping Win32_PingStatus. 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'"

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

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 değeri 0, pingin başarılı olduğunu gösterir.

Tek bir komutla birden çok bilgisayarlara ping yapmak için bir dizi kullanabilirsiniz. Birden fazla adres olduğundan, her adrese ayrı ForEach-Object ping yapmak için 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ğ üzerinde tüm bilgisayarlara ping yapmak 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..254 kullanın. Aralıkta yer alan her değer ping deyiminde kısmi bir adrese ek olarak tam bir alt ağ pingi gerçekleştirebilirsiniz:

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şturmak için bu tekniğin başka bir yerde de kullanılal olduğunu unutmayın. Bu şekilde eksiksiz 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 Win32_NetworkAdapterConfiguration bahsetmiştik. Tam olarak TCP/IP bilgileri değildir, ancak MAC adresleri ve bağdaştırıcı türleri gibi ağ bağdaştırıcısı bilgileri bir 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 üzere, etki alanının SetDNSDomain yöntemini Win32_NetworkAdapterConfiguration. sorgu parametresi bir Invoke-CimMethod WQL sorgu dizesi alır. cmdlet'i, sorgu tarafından döndürülen her örnekte belirtilen yöntemi çağırtır.

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

Filtreleme gereklidir, çünkü yalnızca TCP/IP kullanan bir ağ üzerinde bile, bir bilgisayarda ağ bağdaştırıcısı yapılandırmalarının birkaçı gerçek IPEnabled=True TCP/IP bağdaştırıcıları değildir. 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 adreslerine sahip değildirler.

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 ağ bağdaştırıcısı kümesiyle çalışmayı içerir. WMI kullanarak gerçekleştirecek birkaç farklı eylem vardır ve ortak eylemlerden birkaçını adım adım ilerleriz.

DHCP-Enabled Bağdaştırıcılarını Belirleme

Dhcp özellikli bağdaştırıcıları bir bilgisayarda 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ı alın:

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 başladığı için, yalnızca bu özellikleri DHCP görüntülemek Format-Table için Property 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

Filtre deyimini IPEnabled=True and DHCPEnabled=False kullanmak, zaten etkin olduğu yerde DHCP'nin 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 ReleaseDHCPLease RenewDHCPLease yöntemlerine sahip. Her ikisi de aynı şekilde kullanılır. Genel olarak, yalnızca belirli bir alt ağ üzerinde bir bağdaştırıcının adreslerini serbest bırakmanız veya yenilemeniz gerekirse bu yöntemleri kullanın. Bir alt ağ üzerinde bağdaştırıcıları filtrelemenin en kolay yolu, yalnızca bu 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 bilgisayarda 192.168.1.254'den DHCP kiraları alan bağdaştırıcılarda tüm DHCP kiralarını serbest bıraktı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 RenewDHCPLease yerine yöntemini kullanmak ReleaseDHCPLease olur:

$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 veya yenilenmiş kiralama ile bağdaştırıcı üzerinden bağlandıysanız uzak sisteme erişimi kaybedebilirsiniz.

Tüm Bağdaştırıcılarda DHCP Kiralarını Serbest Bırakma ve Yenileme

ve yöntemlerini kullanarak tüm bağdaştırıcılarda genel DHCP adresi yayınlarını veya yenilemelerini Win32_NetworkAdapterConfiguration ReleaseDHCPLeaseAll RenewDHCPLeaseAll gerçekleştirebilirsiniz. Ancak, kiraların serbest bırakılması ve yenilenmesi belirli bir bağdaştırıcıda değil, genel olarak gerçekleştirilenenden, komut belirli bir bağdaştırıcı yerine WMI sınıfına uygulanıyor olabilir. Invoke-CimMethodcmdlet'i bir sınıfın yöntemlerini çağır olabilir.

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 şu Create yöntemi 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'
}

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

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ğırarak hangi parametrelerin kullanılabilir olduğunu ve bu parametrelerin türlerini biliyor olması gerekir. Örneğin, aşağıdaki komutlarla Win32_Class listesini kullanabilirsiniz:

(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 listeleyen aşağıdaki komutu Create 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 Win32_Share okuyabilirsiniz.

Ağ Paylaşımını Kaldırma

Win32_Share ile bir ağ paylaşımını kaldırabilirsiniz, ancak işlem bir paylaşım oluşturmaktan biraz farklıdır çünkü kaldırılacak belirli örneği almak için Win32_Share gerekir. Aşağıdaki örnek TempShare paylaşımını siler:

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

Bir Windows Erişilebilir Ağ Sürücüsüne Bağlanma

New-PSDrivecmdlet'i 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 kullanılabilen bir sürücüyü (veya diğer PowerShell oturumlarına) eşlemek için Persist parametresini kullansanız gerekir.

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

Not

Yükseltilmiş bağlamda çalıştırıldıklarında kalıcı olarak eşlenen sürücüler kullanılamıyor olabilir. Bu, UAC'nin Windows davranıştır. Daha fazla bilgi için aşağıdaki makaleyi inceleyin: