Ben oldukça Powershell için yeniyim ve profile.ps1 dosyamı kurmak için çalışıyorum. Ben hızlı işlev çağrıları ile yüklemek istiyorum ki gün boyunca süreçleri korumak için sık sık kullandığım yönetilen birkaç DLL var.Powershell işlevi, örneklenen nesneyi döndürüyor ... türden?
PS > $myLibInstance = LoadSomeDll
sorunu yüklenecek görünüyor olsa $ myLibInstance, değil yapmasıdır: PowerShell, bunu,
function LoadSomeDll
{
[System.Reflect.Assembly]::LoadFrom("c:\wherever\SomeLib.dll")
return new-object "SomeLib.SomeObject"
}
Ardından: Yani benim ps1 dosyasında bu işlevi yarattı beklediğim şekilde davranmalıyım ya da açık bir şekilde işlevsiz olarak yüklerseniz. SomeLib.SomeObject öğesinin, nesne oluşturulduğunda kendisini (kayıt defterinden, yuck'ten) yükleyen "ConnectionString" adlı bir public string özelliğine sahip olduğunu varsayalım. Böyle, fonksiyonu olmadan bunu eğer
PS > $myLibInstance.ConnectionString
//Nothing returned
Ama:
PS > $myOtherLibInstance.ConnectionString
StringValueOfConnectionStringProperty
Bunun nedeni nedir:
PS > [System.Reflect.Assembly]::LoadFrom("c:\wherever\SomeLib.dll")
PS > $myOtherLibInstance = new-object "SomeLib.SomeObject"
Ben bu olsun? Bir Powershell işlevinden yeni nesneyi yeni bir nesneyi iade edebilmem mümkün mü?
Şimdiden teşekkürler.
Tekrar teşekkürler, JaredPar. Geçen hafta benim Powershell kurtarıcın oldun. –
@PITADev, hemen hemen aynı sırayla benim erken powershell günlerde çarptı aynı sorunları :) vurdu. Zaman zaman o kadar tuhaf davranıyor. – JaredPar
+1 güzel bir açıklama. Bu sorunla da karşılaştım. –