14.12.2023

Powershell modülleri

Powershell'de modül oluşturmak basit. Belgelerim klasörünüzün altında WindowsPowerShell klasöründe Modules adında bir alt klasör var. Bu konumda modülünüzle aynı isimli bir klasör oluşturup modül dosyanızı da bu klasöre kopyalamanız yeterli. Modül dosyası ise .psm1 uzantılı normal bir powershell dosyası olacak, içinde fonksiyonlarınızın tanımlı olduğu.

Normal şartlar altında Import-Module kullanmaya gerek yok; modüllerin içinde tanımlanan fonksiyonların isimlerini yazmak yeterli, modüller otomatik yükleniyor.

Ancak elimdeki modül dosyasını uzaktaki bir bilgisayara kopyalamama rağmen şöyle bir hata alıyorum.

Bu dosya benim bilgisayarımda da var, ama sayısal imza aramıyor. Neden uzak bilgisayarda arar? Bu arada uzaktaki bilgisayarda ExecutionPolicy'yi de RemoteSigned yaptım. Bypass olarak seçince çalıştı. O zaman farkettim ki olay RemoteSigned için farklılık gösteriyor. Demek ki benim uzaktaki bilgisayara kopyaladığım dosyanın Zone.Information ADS'si ile ilgili olabilir. Modül klasörüne gidip baktım:

PS> Get-Item .\Lib1.psm1 -Stream *

Evet, Zone.Information var. Önce bu engeli kaldıralım.

PS> Unblock-File .\Lib1.psm1

Sonrasında işlem başarılı.

Hiç yorum yok: