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-List
bir 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..254
kullanı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 DHCP
baş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 ReleaseDHCPLeaseAll
RenewDHCPLeaseAll
gerç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:
PowerShell