PowerShell'i Özel Özellik Kümeleriyle Genişletme
Blogu yakın zamanda takip ediyorsanız PowerShell türü uzantıları nasıl kullandığımı okumuşsunuzdur. Bu, her zaman kullandığım şeylere yeni özellikler eklemenin bir yoludur. Amaç, yazmaktan tasarruf etmek ve ihtiyacım olanı minimum çabayla elde etmektir. Ayrıca kendi özellik kümelerinizi oluşturarak bunu bir adım daha ileri götürebilirsiniz.
Muhtemelen bilmiyordunuz ama PowerShell zaten özellik kümelerini kullanıyor. İşte kendi başınıza deneyebileceğiniz bir örnek.
Bu nereden çıktı? Get-Process'i Get-Member'e yönlendirin ve kendiniz görün.
Özellik kümesi, özelliklerin bir alt kümesini seçmenin kısayol yoludur. Ayrıca özellik kümelerini de tanımlayabilirsiniz. Şöyle bir komut çalıştırmamı sağlayan Hyper-V uzantılarımı ele alalım:
Bu tesis grubunu sık sık görmek isteyebilirim. Ama açıkçası bunu her zaman yazmak istemiyorum. Update-TypeData cmdlet'iyle yeni bir özellik kümesi tanımlayabilirsiniz, ancak bu biraz daha fazla çaba gerektirecektir. Maalesef kullanımı kolay parametreler yok. Bunun yerine şöyle bir ps1xml dosyası oluşturmanız gerekir:
<?xml version="1.0" encoding="utf-8" ?>
<Types>
<Type>
<Name>Microsoft.HyperV.PowerShell.VirtualMachine</Name>
<Members>
<PropertySet>
<Name>PSConfig</Name>
<ReferencedProperties>
<Name>VMName</Name>
<Name>State</Name>
<Name>DynamicMemoryEnabled</Name>
<Name>DiskPath</Name>
<Name>TestVHD</Name>
<Name>ConfigurationFile</Name>
</ReferencedProperties>
</PropertySet>
</Members>
</Type>
</Types>
Umarım bunu okumak çok zor olmaz. VirtualMachine türü için PSConfig adında bir özellik kümesi üyesi tanımlıyorum. Bu özellik kümesi başvurulan özellik adlarını kullanacaktır. Aynı XML dosyasına diğer türler için tanımlar ekleyebilirsiniz ancak ben bu dosyaya MyHyperV.types.ps1xml adını vermedim. Adın pek önemi yok ancak kalıp, dosya adının bir parçası olarak type.ps1xml'yi kullanmaktır.
Bu dosyayı yüklemek için bu satırı PowerShell profil betiğime ekliyorum.
Update-TypeData -AppendPath c:\scripts\MyHyperV.types.ps1xml
Kullanıma hazır tanımlarla çelişen hiçbir şey tanımlamıyorum, bu nedenle başına mı yoksa sonuna mı eklemem önemli değil. Artık hayatım çok daha kolay.
Yeni tanımı Get-Member ile görebiliyorum.
XML ilk başta biraz göz korkutucu olabilir, ancak taslağı oluşturduktan sonra bu basit bir kesme ve yapıştırma meselesi olmalıdır. Etiketlerinize ve vakanıza dikkat etmeyi unutmayın.
Bu kullanacağınız bir şeye benziyor mu?