Internal PowerShell Module Repository

2 166

بعد از نصب  Powershell 7 و استفاده از ماژول های جدیدی که NuGet در اختیار من گذاشته بود واقعا داشتم لذت می بردم ولی با معضل جدیدی روبه رو شده بودم!

نیاز داشتم  Module های که با آنها کار می کردم را بر روی سرورها داشته باشم (طبیعتا سرورها دسترسی به اینترنت ندارند و نمی توان از دستور  Install-module استفاده کرد). و مورد دیگه ای که شاید در سازمانها و اورگانهای دولتی وجود داره، سازمان شما باید یک Repository محلی داشته باشد که بعد از بررسی یک ماژول توسط کارشناسان امنیت، آن ماژول را منتقل کنند به  Repository مخصوص. یا به هر دلیلی  PSGallery مایروسافت توسط سیاستهای سازمان بلاک شده باشد و… به هر حال همین سه مورد باعث شد که دنبال یک سولوشن اساسی باشم، که آن هم استفاده از یک Repository سازمانی و محلی می باشد.

شاید بعضی از دوستان بگن شما می توانید با دانلود یک  Module آن را بصورت  Offline بر روی سرورهای دیگر نصب کنید ولی این روش  Overhead زیادی دارد شما باید ماژول ها را تک تک دانلود کنید  (Save-Module) و آنها در مسیر $PSModulePath سرور مورد نظر کپی کنید و با دستور  Import-Module آنها را لود کنید.

ولی استفاده از یک  Repository محلی مزایای زیادی دارد از جمله:

تحت مدیریت و نظارت شماست.

تمامی سیستم های آن سازمان دسترسی به آن دارند.

فقط ماژولهای که مورد تائید سازمان می باشد در آن قرار میگیرد.

و….

برای ایجاد  Repository محلی دو یا چند روش وجود دارد از جمله این روش. ولی من برای اینکار از ابزار ProGet استفاده می کنم، چون هم دردسر کمتری نسبت به بقیه روش ها دارد و هم نسخه  Free آن جوابگوی نیازهای من می باشد. قبل از نصب این ابزار در مورد آن بیشتر بخوانید.

چون در یک محیط تست این ابزار را نصب می کنم، پس از تنظیمات پیش فرض استفاده می کنم ولی در محیط Production این ابزار را با  IIS, SQL ادغام کنید.

مراحل زیر را برای نصب  ProGet دنبال کنید.

 

بعد از نصب نرم افزار مراحل زیر را برای ایجاد یک  Feed جدید دنبال کنید.

 

خب کار ما با این نرم افزار تمام شد. برای تست من ماژول  NTFSSecurity را دانلود می کنم و به نرم افزار معرفی می کنم:

برای آپلود ماژول ها ما می توانیم از دو روش استفاده کنید. روش اول اقدام از طریق نرم افزار:

گذینه  Upload from disk را انتخاب و فایلی که در مرحله قبل دانلود کردید را معرفی کنید.

روش بعدی استفاده از پاورشل می باشد. برای اینکار دستور زیر را اجرا کنید.

Publish-Module -Name NTFSSecurity -Repository MyCorpRepository -NuGetApiKey “Admin:Admin” –Verbose

نکته: پارامتر NuGetApiKey الزامی می باشد. باید  credentials نرمافزار  ProGet را مشخص کنید تا بتوان از طریق پاورشل مستقیما به آن فایل آپلود کرد.

مرحله بعدی تعریف این Repository به عنوان یک  Repository، Trust شده برای سرورها می باشد. برای اینکار می توانید  دستورات را بصورت دستی یا با اسکریپت انجام دهید (اسکریپت را با GPO دیپلوی کنید)

$RepositoryURL = http://Jahloli:8624/nuget/MyCorpRepository/

Register-PSRepository -Name MyCorpRepository -SourceLocation $RepositoryURL -PublishLocation $RepositoryURL -InstallationPolicy Trusted

با دستور  Get-PSRepository می توانید  Repository که اضافه کردید را ببینید:

خب الان وقتشه که تنظیمات را چک کنیم. برای اینکار دستور زیر را اجرا کنید:

Find-Module -Name * -Repository MyCorpRepository

برای نصب ماژول از این Repository دستور زیر را اجرا کنید:

Install-Module -Name ActiveDirectoryTools -Repository MyCorpRepository -AcceptLicense -PassThru –AllowClobber

Import-Module ActiveDirectoryTools

الان می توانید از هر سروری این Repository را اضافه کنید و ماژول های مورد نظرتان را نصب کنید. دوستان اگر نکته ای موردی باشه خوشحال میشم در قسمت نظرات اعلام کنید.

شاد و خرم باشید.

نویسنده: احمد جهلولی

2 نظرات
  1. میلاد اسحاقی می گوید

    مهندس خیلی ممنونم از به اشترک گذاری این مطلب مفید و کاربردی

    1. Ahmad-JH می گوید

      به امید روزی که تمامی سرویس های ما بر روی نسخه های Core اجرا شوند. البته اون دسته از سرویس ها که بر روی Core قابل پیاده سازی باشند. 🙂

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.