0

درس ششم : معرفی PowerShell  و قابلیت Desired State Configuration(DSC)

  •  
 

پاورشل چیست؟

  • در علوم کامپیوتر shell به معنای یک رابط کاربری می باشد ، که دسترسی فرد را به سرویس های سیستم عامل  ممکن می سازد، به طور کلی shell میتواند در دو حال خط فرمان (commomd line interface)  یا گرافیکی(graphical user interface) ارائه شود.

تاریخچه ی Powershell

اولین نسخه Powershell در ماه نوامبر سال 2006 برای ویندوز xp و ویندوز2003  server و ویندوز vista منتشر شد و آخرین نسخه 5.0 Powershell با ویندوز 10 ارائه شد.

جهت مشاهده ورژن پاورشل در ویندوز 10 می توان از دستور زیر استفاده نمود:

PSVersionTable$

PowerShell :

این نسخه از پاورشل به منظور ارتقای PowerShell Core 6 و PowerShell 5.1 در نیمه دوم سال ۲۰۱۹ معرفی شد.

این نسخه بر روی .NET Core 3 اجرا می شود و تقریبا نزدیک به ۹۰ درصد ماژول های ورژن ۵٫۱ را پشتیبانی می کند.

چه تفاوتی بین PowerShell و Command Prompt وجود دارد؟

تفاوت پاورشل با CMD در چیست؟ پاورشل محیطی مشابه با Command prompt دارد، اما این تنها ظاهر قضیه است و این دو در اصل، تفاوت‌های زیادی با هم دارند. کاربران Command prompt در بسیاری از موارد، نیاز به دانش تخصصی خاصی ندارند و با وارد کردن مجموعه‌ای از دستورهای ساده در Command prompt، کار خود را راه می‌اندازند. اما کاربران پاورشل، حرفه‌ای‌تر هستند. ویندوز پاورشل یک ابزار حرفه‌ای و کارآمد است که با استفاده از زبان برنامه نویسی C# کار می‌کند. در واقع، دستورات پاورشل، به زبان C# نوشته‌ می‌شوند.

مساله ای که از ابتدای رقابت ویندوز و لینوکس وجود داشت خط فرمان پیشرفته و قدرتمند لینوکس به ویندوز بود، که با ایجاد windows power shell  دیگر به خوبی توانست با linux consol  رقابت کند.

از قابلیت های آن میتوان :

  • تعامل کامل با ابزار های مدیریتی مایکروسافت در شبکه همچون share point –Exchange –Active directory
  • قابلیت دسترسی و ایجاد تغییر و تحول به صورت مستقیم در قسمت های مختلف ویندوز از جمله Registry, group Policy
  • قابلیت اسکریپت نویسی ….راهنمای کامل برای هر دستور همراه با مثال در محیط Power shell  …امکان جستجو و خزیدن در میان دستورات و ارگومان ها اشاره کرد.

چگونه Powershell را اجرا کنیم؟

برای اجرای Powershell راه های زیادی وجود دارد که در زیر به آن ها اشاره کنیم:

در منوی Start  کلمه Powershell را جستجو کنید سپس آیکون Powershell ظاهر می شود و میتوانید آن را اجرا کنید.

کلید های win+R را نگه داشته تا پنجره Run باز شود سپس کلمه ی Powershell را تایپ کنید و کلید Enter  را بفشارید.

میتوانید cmd را باز نموده سپس درآن دستور Powershell را وارد کنید تا به مد Powershell وارد شوید.

تذکر: دستورات Powershell را cmdlets می گوییم .

با استفاده از دستور زیر می توانید لیست cmdlet ها را دریافت کنید.

Get-Command

مثلا” :                                   get-command *-AD*

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

Get-Service

دستور زیر، لیستی از cmdlet های مربوط AD را فراهم می آورد:

Get-Command -Noun AD* | More

همانند cmd استفاده از more| سبب می شود نتایج به صورت صفحه بندی شده نمایش داده شود. روش بهتر برای نمایش cmdlet های یک ماژول استفاده از دستور زیر است:

Get-Command -Module ActiveDirectory

 

برای آنکه اطلاعاتی در خصوص هر cmdlet کسب کنید کافی است از دستور Get-Help استفاده کنید.

Get-Help cmdlet

مثال:

Get-Help Get-ADGroupMember 

 

 

پیاده ‌سازی DSC جهت نصب و نگهداری محیط‌ های یکپارچه

” Desired State Configuration “

قابلیت  DSC یا Windows PowerShell Desired State Configuration یک افزونه برای PowerShell می باشد که ویژگی های زیر را برای مدیریت از راه دور یک یا چند سرور در اختیار مدیر شبکه قرار می دهد. بوسیله DSC می توان اسکریپت­های PowerShell ی را ایجاد نمود.

DSC امکانات زیر را در اختیار مدیر شبکه قرار می دهد:

نصب و حذف  Role ها و  Feature ها

مدیریت تنظیمات ریجیستری

مدیریت فایل‌ها و پوشه‌ها

مدیریت سرویس‌ها وپردازش‌ها

مدیریت حساب‌های کاربری و گروه‌ها

مدیریت متغییرهای محیطی

اجرای اسکریپت‌های PowerShell

نصب و مدیریت پکیج های نرم افزاری msi و exe

قابلیت DSC  این امکان را فراهم می­کند تا مدیر شبکه از راه دور به وسیله اسکریپت، تغییراتی را بر روی سرور مقصد انجام دهد. در شکل زیر چگونگی قرارگیری اجرای DSC را مشاهده می نمایید.

شکل زیر قسمت‌های DSC را در یک دیدکلی نمایش می‌دهد.

تاریخچه DSC :

اولین بار DSC با ویندوز سرور 2012  R2 و با پاورشل 4  ، ارایه شد.

جهت نصب بر روی  Windows Server 2008 R2 ، Windows 7  ، Windows Server 2008  می بایست حتما  ، Microsoft .NET Faramework 4.5  نصب گردد.

نرم افزار Windows Management Framework (WMF) 4.0  نیز می بایست از سایت مایکروسافت دانلود نماییم.

نکته : در صورتیکه بخواهیم Powershell  را بروز نمایی کنیم ، کافیست آخرین نسخه WMF را دانلود نماییم.

دستورات DSC :

جهت مشاهده دستورات Built-in Resource  های موجود در سیستم را مشاهده نماییم:

در صورتیکه بخواهیم مواردی که در Resource File  هست را مشاهده کنیم  میباست دستور زیر را اجرا نماییم:

Get-DscResource -Name file | Select-Object -ExpandProperty properties

نکته : البته می توانیم از Resource  هایی  که Developer  ها بصورت آماده در سایت مایکروسافت گذاشته اند هم import  نماییم و استفاده کنیم.

نکته : جهت دانلود Resource  های داخل Repository psgallery ، می توانیم از دستور زیر استفاده کنیم ( در شکل زیر از Powershell ISE ) استفاده نموده ایم:

Find-DscResource

Find-DscResource -Repository psgallery

Find-Module “share”

Find-DscResource -ModuleName “xSmbShare” | Install-Module

انواع DSC Model :

DSC Push    –   

در این مدل اغلب پروسه ها بصورت دستی انجام می شود و فایل های Configuration  را به سمت سرور های مورد نظر Push  می کنیم و سپس اعمال می شود.

حال اگر تغییراتی در فایلهای پیکربندی اعمال می کردیم متاسفانه دوباره می بایست فایل های پیکربندی خود را به سمت نود های مقصد Push  می نمودیم. همانطور که ملاحظه می کنید فرآیند اتومات سازی رو به معنای واقعی نداریم.

–         DSC Pull

تمام فرآیند های این مدل کاملا بصورت اتوماتیک می باشد.

در این مدل یک Pull Server به عنوان یک نقطه مرکزی راه اندازی می کنیم.

این مدل دارای سه مرحله می باشد.

1-    Authoring Phase

2-    Staging Phase(Pull Server)

3-    Configuration Phase

Server  یک مکان مرکزی جهت نگهداری فایل های DSC Configuration  می باشد و می تواند یک فایل سرور و یا یک وب سرور باشد.

در Configuration Phase  ارتباط با sataging Phase  بر خلاف مدل Push  ، ارتباط دو طرفه می باشد.

سناریو یک : راه اندازی Pull Server  به عنوان SMB Server

 

  • کلیه مراحل کار شامل موارد زیر می باشد:
  • 1-               دانلود DSC Resource  های لازم  بر روی Pull Server
  • 2-               آماده سازی (Local Configuration Manager )   LCM
  • 3-               تولید فایل پیکربندی .mof جهت ارسال به کلاینت ها
  • 4-               Pull نمودن فایل تنظیمات بر روی سرور مقصد

  • نکته 1: ابتدا از ارتباط سرور به اینترنت مطمین شوید.
  • نکته 2: بدلیل وجود فیلتر در برخی از آدرس های سایت مایکروسافت !  از فیلتر شکن قبل از اجرای کد ها استفاده نمایید.
  • مرحله اول : دانلود DSC Resource های لازم
  • ابتدا چند تا ماژول مورد نیاز را با استفاده از Powershell ISE نصب می نماییم :
  • “xSmbShare”  

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

  • “cNtfsAccessControl”

اجازه استفاده از شیرینگ با استفاده از DscResource  ها را می دهد و cNtfsAccessControl هم اجازه استفاده از پرمیشن های لازم را می دهد.

Find-DscResource -ModuleName “xSmbShare”  | Install-Module

  • همین اقدام را جهت نصب ماژول “cNtfsAccessControl”    انجام می دهیم.

Find-DscResource -ModuleName “cNtfsAccessControl”  | Install-Module

مرحله دوم :تعریف سرور های مقصد درون فولدر به اشتراک گذاشته شده :

مجموعه دستورات زیر را در Powershell ISE اجرا می نماییم:

منبع :

https://docs.microsoft.com/en-us/powershell/dsc/pull-server/pullserversmb?view=dsc-1.1
Configuration DSCSMB
{
    Import-DscResource -ModuleName PSDesiredStateConfiguration
    Import-DscResource -ModuleName xSmbShare
    Import-DscResource -ModuleName cNtfsAccessControl


    Node localhost
    {

        File CreateFolder
        {
            DestinationPath = 'C:\DscSmbShare'
            Type = 'Directory'
            Ensure = 'Present'
        }

        xSMBShare CreateShare
        {
            Name = 'DscSmbShare'
            Path = 'C:\DscSmbShare'
            FullAccess = 'NetElearn\administrator', 'NetElearn\srv01$','NetElearn\srv02$'
            FolderEnumerationMode = 'AccessBased'
            Ensure = 'Present'
            DependsOn = '[File]CreateFolder'
        }

        cNtfsPermissionEntry PermissionSet1
        { 
            Ensure = 'Present'
            Path = 'C:\DscSmbShare'
            Principal = 'NetElearn\srv02$'
            AccessControlInformation = @(
                cNtfsAccessControlInformation
                {
                    AccessControlType = 'Allow'
                    FileSystemRights = 'ReadAndExecute'
                    Inheritance = 'ThisFolderSubfoldersAndFiles'
                    NoPropagateInherit = $false
                }

            )
            DependsOn = '[File]CreateFolder'

            
        }


     }
}
DSCSMB
Start-DscConfiguration -ComputerName localhost -Path DSCSMB -Wait -Verbose -Force 

  • طبق شکل زیر قسمت های های لایت را انتخاب کرده و بر روی Run Selection(f8) کلیک می نماییم.

سپس دستور زیر را اجرا می کنیم:

Start-DscConfiguration -ComputerName localhost -Path DSCSMB -Wait -Verbose -Force

نتیجه اینکه :

مرحله سوم : تولید فایل پیکربندی mof. جهت ارسال به کلاینت ها

  • در این مرحله فایلی ایجاد می کنیم که بتواند سرویس IIS را به همراه ASP 4.5  نصب بنماید سپس این فایل را درون C:\DscSmbShare    قرار می دهیم و از این فایل جهت پیکربندی نصب سرویس IIS کلاینتها استفاده می نماییم.
  •  فایلی به نام Configuration file-install IIS.ps1 ، حاوی کد های زیر ایجاد می نماییم:

Configuration IISWebsite

{

     Node SRV1

     {

          WindowsFeature IIS

           {

                Ensure = “Present”

                Name = “Web-Server”

           }

           WindowsFeature ASP

           {

                Ensure = “Present”

                Name = “Web-ASP-Net45”

           }

 

 

    

     }

 

}

IISWebSite

 

مرحله چهارم :  Pull نمودن فایل تنظیمات بر روی سرور مقصد

  • مجموعه دستورات زیر را بر روی Pull Server  اجرا و به نام lcm.ps1 ذخیره کرده و بر روی سرور مقصد کپی می نماییم.
  • منتها لازم است قبل از اجرای فرامین فوق با استفاده از دستور new-guid  ، id  جدید ایجاد شده pull server  را جایگزین id  واقع در کد های ذیل بنماییم.

[DSCLocalConfigurationManager()]

configuration PullClientConfigID

{

    Node localhost

    {

        Settings

        {

            RefreshMode = ‘Pull’

            ConfigurationID = ‘1d545e3b-60c3-47a0-bf65-5afc05182fd0’

            RefreshFrequencyMins = 30

            RebootNodeIfNeeded = $true

        }

        ConfigurationRepositoryShare srv01

        {

            SourcePath = ‘\\srv01\DscSmbShare’

        }

    }

}

PullClientConfigID

  • سپس نام فایل ایجاد شده مرحله قبل را “SRV1.mof ” را بر روی مسیر DscSmbshare  واقع در سرور مبدا کپی کرده و نام آنرا جایگزین id  زیر می نماییم:

حال می بایست فایل مورد نظر lcm.ps1  را بر روی سرور مقصد کپی می کنیم.

  • و سپس آنرا اجرا می نماییم  .

  • در اینصورت فولدری بر روی دسکتاپ سرور مقصد به نام PullClientConfigID  ایجاد می شود.که فایل تنظیمات lcm  درون آن قرار دارد.

حال می بایست این فایل را از روی سرور مقصد SRV02 اجرا نماییم:

Set-DscLocalConfigurationManager -Path C:\Users\Administrator.NETELEARN\Desktop\PullClientConfigID -Verbose

 

حال جهت چک کردن اینکه آیا دستور فوق صحیح اجرا شده است یا خیر می بایست از دستور زیر استفاده نماییم:

Get-DscLocalConfigurationManager

  • بعد از گذشت زمان 30 دقیقه ، کلاینت و سرور ارتباط برقرار می کنند و این تغییرات اعمال می شوند.
  • نکته : جهت اعمال سریعتر می توانیم از دستور زیر استفاده نماییم:

Update-DscConfiguration -Verbose

 

در این لحظه بر روی سرور مقصد SRV02 ، سرویس IIS بعد از مدتی نصب خواهد شد.

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *