• ماژول Active Directory را برای PowerShell نصب و وارد کنید. Windows PowerShell - یادداشت های مفید تبدیل نوع داده

    0
    قابل اجرا برای:
    Office 365 برای حرفه ای ها و مشاغل کوچک، Office 365 برای شرکت ها، Live@edu
    ویندوز XP، ویندوز ویستا، ویندوز سرور 2003، ویندوز 7 و ویندوز سرور 2008

    قبل از شروع استفاده از Windows PowerShell، باید مطمئن شوید که نسخه های صحیح Windows PowerShell و Windows Remote Management (WinRM) بر روی رایانه شما نصب و پیکربندی شده است. شما باید از Windows Management Framework استفاده کنید که شامل نسخه های صحیح Windows PowerShell v2 و WinRM 2.0 است.

    اگر رایانه شما از ویندوز 7 یا ویندوز سرور 2008 R2 استفاده می کند، نیازی به نصب چیزی ندارید. Windows Management Framework قبلاً نصب شده است.

    اگر رایانه شما یکی از سیستم عامل های زیر را اجرا می کند، می توانید Windows Management Framework را دانلود و نصب کنید:

      ویندوز ویستا SP1 یا SP2؛

      Windows Server 2008 SP1 یا SP2.

      Windows Server 2003 SP2;

      ویندوز XP با سرویس پک 3 (SP3).

    بیا شروع کنیم:

    1. نسخه های قبلی Windows PowerShell را از رایانه خود حذف کنید

    قبل از نصب Windows Management Framework، باید تمام نسخه های موجود Windows PowerShell را حذف نصب کنید.

    1.1 حذف Windows PowerShell از ویندوز ویستا

      در گروه برنامه‌های کنترل پنل، برنامه‌ها و ویژگی‌ها را باز کرده و تمام نمونه‌های Windows PowerShell را که در لیست برنامه‌های نصب شده هستند، حذف کنید. به عنوان مثال، نسخه CTP Windows PowerShell v2 ممکن است به عنوان "Windows PowerShell(TM) V2" ظاهر شود.

      در قسمت Tasks، View installed updates را انتخاب کنید و تمام نمونه های Windows PowerShell را که در لیست به روز رسانی های نصب شده هستند حذف کنید. برای مثال، Windows PowerShell V1 ممکن است به عنوان یک به‌روزرسانی ویندوز با یکی از شماره‌های مقاله زیر در پایگاه دانش مایکروسافت ظاهر شود:

    1.2 حذف Windows PowerShell از Windows Server 2008

      Server Manager را اجرا کنید و بخش Components را باز کنید.

      1. "حذف ویژگی ها" را انتخاب کنید.

        Windows PowerShell را انتخاب کنید و دستورالعمل های حذف را دنبال کنید.

      در کنترل پنل، در قسمت Programs، برنامه ها و ویژگی ها را باز کنید و تمام نمونه های Windows PowerShell را که در لیست برنامه های نصب شده هستند، حذف کنید.

      در گروه "وظایف"، مورد "مشاهده به روز رسانی های نصب شده" را انتخاب کنید. تمام نمونه هایی از Windows PowerShell را که در لیست به روز رسانی های نصب شده هستند حذف کنید.

    1.3 حذف Windows PowerShell از Windows Server 2003 یا Windows XP

      Add or Remove Programs را در کنترل پنل باز کنید و هر نمونه ای از Windows PowerShell را که در لیست برنامه های نصب شده است حذف کنید.

      در قسمت Add or Remove Programs، Show updates را انتخاب کنید. تمام نمونه هایی از Windows PowerShell را که در لیست به روز رسانی های نصب شده هستند حذف کنید. برای مثال، Windows PowerShell V1 ممکن است به عنوان یک به‌روزرسانی ویندوز با شماره مقاله زیر در پایگاه دانش مایکروسافت ظاهر شود: KB926139.

    2. حذف نسخه های قبلی WinRM از رایانه شما

    قبل از نصب Windows Management Framework، باید تمام نسخه های موجود WinRM را حذف نصب کنید.

    2.1 حذف WinRM از ویندوز ویستا یا ویندوز سرور 2008

      در گروه برنامه‌های کنترل پنل، برنامه‌ها و ویژگی‌ها را باز کنید و تمام نمونه‌های کنترل از راه دور ویندوز را که در لیست برنامه‌های نصب شده هستند، حذف کنید.

      در گروه "وظایف"، مورد "مشاهده به روز رسانی های نصب شده" را انتخاب کنید. تمام نمونه‌های سرویس مدیریت از راه دور ویندوز را که در لیست به‌روزرسانی‌های نصب شده هستند، حذف کنید. به عنوان مثال، نسخه CTP WinRM 2.0 ممکن است به عنوان "WindowsRemoteManagement" با یکی از شماره های مقاله زیر در پایگاه دانش مایکروسافت ظاهر شود:

    2.2 حذف Windows PowerShell از Windows Server 2003 یا Windows XP

      Add or Remove Programs را در کنترل پنل باز کنید و تمام نمونه هایی از کنترل از راه دور ویندوز را که در لیست برنامه های نصب شده هستند حذف کنید.

      در قسمت Add or Remove Programs، Show updates را انتخاب کنید. تمام نمونه‌های سرویس مدیریت از راه دور ویندوز را که در لیست به‌روزرسانی‌های نصب شده هستند، حذف کنید. به عنوان مثال، WinRM ممکن است به عنوان یک به روز رسانی ویندوز با شماره مقاله زیر در پایگاه دانش مایکروسافت ظاهر شود: KB936059.

    3. Windows Management Framework را نصب کنید

      Windows Management Framework را دانلود و نصب کنید. بسته ای را انتخاب کنید که حاوی Windows PowerShell v2 و WinRM 2.0 باشد که برای سیستم عامل، معماری سیستم و زبان شما مناسب است.

      پس از نصب WinRM و Windows PowerShell، نرم افزار را طوری پیکربندی کنید که طبق مراحل زیر به درستی کار کند.

    توجه داشته باشید

    4. بررسی کنید که اسکریپت ها می توانند در Windows PowerShell اجرا شوند

      به ترتیب "شروع"، "همه برنامه ها"، "لوازم جانبی"، Windows PowerShell را انتخاب کنید.

      برای باز کردن Windows PowerShell یکی از موارد زیر را انجام دهید:

      • اگر از Windows Vista، Windows 7 یا Windows Server 2008 R2 استفاده می کنید، روی Windows PowerShell کلیک راست کرده و Run as Administrator را انتخاب کنید. هنگامی که یک فرمان User Account Control ظاهر می شود که از شما می خواهد ادامه دهید، روی Continue کلیک کنید.

        اگر از Windows XP یا Windows Server 2003 استفاده می کنید، روی Windows PowerShell کلیک کنید.

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

      Get-ExecutionPolicy

      اگر مقدار برگشتی RemoteSigned نیست، باید مقدار را به RemoteSigned تغییر دهید.

      توجه داشته باشید

      اگر خط‌مشی اجرای اسکریپت روی RemoteSigned تنظیم شده باشد، فقط اسکریپت‌هایی که در رایانه کاربر ایجاد شده‌اند یا توسط یک منبع مطمئن امضا شده‌اند، قابل اجرا هستند.

    آماده شدن برای اجرای اسکریپت ها در Windows PowerShell

    در یک جلسه Windows PowerShell که به عنوان مدیر باز می شود، دستور زیر را اجرا کنید:

    Set-ExecutionPolicy RemoteSigned

    5. بررسی اینکه آیا WinRM مجوز اتصال به Windows PowerShell را دارد یا خیر

      به ترتیب "شروع"، "همه برنامه ها"، "لوازم جانبی" را انتخاب کنید.

      برای باز کردن Command Prompt یکی از موارد زیر را انجام دهید:

      • اگر از ویندوز ویستا، ویندوز 7 یا ویندوز سرور 2008 R2 استفاده می کنید، روی Command Prompt راست کلیک کرده و Run as Administrator را انتخاب کنید. هنگامی که یک فرمان User Account Control ظاهر می شود که از شما می خواهد ادامه دهید، روی Continue کلیک کنید.

        اگر از Windows XP یا Windows Server 2003 استفاده می کنید، Command Prompt را انتخاب کنید.

      در خط فرمان، دستور زیر را اجرا کنید:

      winrm دریافت winrm/config/client/auth

      توجه داشته باشید

      اگر سرویس WinRM از قبل در حال اجرا است، نیازی به راه اندازی آن ندارید. با اجرای دستور sc query winrm می توانید وضعیت سرویس WinRM را بررسی کنید.

    در نتایج به دنبال مقدار Basic = بگردید. اگر مقدار Basic = false مشخص شده باشد، باید به Basic = true تغییر یابد.

    توجه داشته باشید

      اگر سرویس WinRM در حال اجرا است و نیازی به تغییر مقدار Basic ندارید، net stop winrm را اجرا کنید تا سرویس WinRM متوقف شود.

    فعال کردن پشتیبانی از احراز هویت اولیه در WinRM

      در یک پنجره Command Prompt که به عنوان مدیر باز می شود، دستورات زیر را اجرا کنید: مقدار در پرانتزهای فرفری ( ) به حروف کوچک و بزرگ حساس است:

      مجموعه winrm winrm/config/client/auth @(Basic="true")

      Basic=true را در خروجی فرمان بررسی کنید.

      توجه داشته باشید

      اگر سرویس WinRM در حال اجرا است، net stop winrm را اجرا کنید تا متوقف شود.

    اقدام بعدی

    امروز نحوه نصب و استفاده از Active Directory Administration Module برای Windows PowerShell را به شما نشان خواهم داد. cmdlet های موجود در این ماژول را می توان برای به دست آوردن اطلاعات و مدیریت اشیاء و تنظیمات مختلف AD استفاده کرد. این ماژول در سیستم عامل های سرور به عنوان یک جزء مجزا نصب می شود. در سیستم عامل های دسکتاپ (ویندوز 10، 8.1، 7)، باید بسته ابزارهای مدیریت سرور از راه دور (RSAT) را نصب کنید که شامل یک ماژول برای تعامل با AD از PowerShell است. علاوه بر این ماژول، RSAT شامل تمام اسنپ‌های مدیریت گرافیکی لازم، ابزارهای خط فرمان و ماژول‌های Windows PowerShell برای مدیریت ویندوز و AD است. شما باید خودتان این بسته را برای نسخه سیستم عامل خود از وب سایت مایکروسافت دانلود کنید.

    نصب ماژول Active Directory برای Windows PowerShell

    ماژول Active Directory برای Windows PowerShell اولین بار در Windows Server 2008 R2 ظاهر شد. به طور خودکار بر روی نصب می شود. برای استفاده از cmdlet های PowerShell از ماژول AD، دامنه شما باید حداقل یک کنترلر با ویندوز سرور 2008 R2 یا بالاتر داشته باشد. اگر شبکه شما فقط دارای DCهایی است که ویندوز سرور 2003 و 2008 را اجرا می کنند، باید سرویس دروازه مدیریت Active Directory را دانلود و نصب کنید. cmdlet های PowerShell از ماژول اکتیو دایرکتوری با یک سرویس وب که بخشی از یک کنترل کننده دامنه با نقش ADDS است تعامل دارند.

    می‌توانید ماژول Active Directory را برای Windows PowerShell نه تنها بر روی یک کنترل‌کننده دامنه، بلکه بر روی هر سرور دامنه عضو یا ایستگاه کاری نصب کنید. در Windows Server 2016، می توانید ماژول Active Directory را برای Windows PowerShell از کنسول گرافیکی Server Manager با استفاده از Add Roles and Features Wizard نصب کنید. فقط ویزارد را اجرا کنید و در مرحله انتخاب کامپوننت ها باید Remote Server Administration Tools -> Role Administration Tools -> AD DS and AD LDS Tools -> را انتخاب کنید. ماژول Active Directory برای Windows PowerShell(Remote Server Administration Tools > Role Administration Tools > AD DS and AD LDS Tools -> Active Directory for Windows PowerShell).

    این ماژول با استفاده از PowerShell نیز قابل نصب است. یک کنسول PowerShell با حقوق مدیر باز کنید و دستورات زیر را اجرا کنید:

    Import-Module ServerManager
    Add-WindowsFeature -Name "RSAT-AD-PowerShell" -IncludeAllSubFeature

    در ویندوز 10، ویندوز 8.1 و ویندوز 10، برای نصب ماژول RSAT-AD-PowerShell، ابتدا باید نسخه مناسب RSAT را نصب کنید، پس از آن، ماژول باید در کنترل پنل (کنترل پنل -> برنامه ها -> برنامه ها) فعال شود. و Features را انتخاب کنید و روی "روشن کردن ویژگی های ویندوز" -> ابزارهای مدیریت سرور از راه دور -> ابزارهای مدیریت نقش -> ابزارهای AD DS و AD LDS -> ماژول اکتیو دایرکتوری برای مولفه POwerShell ویندوز را فعال کنید.

    یا می توانید ماژول را با استفاده از PowerShell نصب کنید:

    Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell

    ماژول PowerShell را برای Active Directory وارد کنید و از آن استفاده کنید

    در ویندوز 7 و ویندوز سرور 2008 R2، که PowerShell 2.0 روی آنها نصب شده است، برای شروع استفاده از ماژول AD، باید آن را با دستور زیر به یک جلسه PowerShell وارد کنید:

    از طرف دیگر، می‌توانید یک ماژول را از یک ماشین راه دور که قبلاً نصب شده است صادر کنید و آن را به جلسه PowerShell خود وارد کنید:

    $MySession = New-PSSession -ComputerName MyDomainController
    Export-PSsession -Session $MySession -Module ActiveDirectory -OutputModule RemoteADPosh
    Remove-PSSession -Session $MySession
    Import-Module RemoteADPosh

    در Windows Server 2012 R2/2016 و Windows 8.1/Windows 10، ماژول (در صورت نصب) به طور خودکار به جلسه وارد می شود.

    اگر کامپیوتر به یک دامنه متصل شده باشد، به طور پیش فرض یک درایو با نام ایجاد می شود آگهی:.می توانید با دستور CD به این درایو بروید و از دستورات سیستم فایل معمول خود برای پیمایش در این درایو استفاده کنید. مسیرها در قالب X500 ارائه شده اند.

    PS C:\> سی دی AD:
    PS AD:\> کارگردان

    PS AD:\> سی دی "DC=vmblog,DC=ru"

    شما می توانید لیستی از cmdlet های ماژول موجود برای کار با Active Directory را به صورت زیر نمایش دهید:

    Get-Command -Module ActiveDirectory

    نسخه های مختلف ویندوز دارای تعداد متفاوت cmdlet در دسترس هستند:

    • Windows Server 2008 R2 - 76 cmdlets.
    • ویندوز سرور 2012 - 135 cmdlet
    • Windows Server 2012 R2 / 2016 - 147 cmdlet.

    بنابراین اکنون می توانید از cmdlet های PowerShell برای مدیریت AD استفاده کنید. در وب سایت ما می توانید با استفاده از cmdlet های زیر از ماژول AD برای PowerShell آشنا شوید: , .

    مدتی از عرضه نهایی جدیدترین سیستم عامل مایکروسافت می گذرد و نه تنها علاقه مندانی که بیلدهای میانی را آزمایش می کنند، بلکه آن دسته از کاربرانی که آپدیت مورد انتظار را دانلود کرده اند، قبلاً با آن آشنا شده اند. سیستم جدید خوبه یا نه؟ آیا این آخرین محصول نوآورانه است یا فقط "هشت" است که باید به موقع عرضه می شد؟ اینها سوالاتی است که به هیچ وجه نمی توان به آنها پاسخ قطعی داد. علاوه بر نوآوری های آشکار، که شامل منوی استارت جدید، مرورگر مایکروسافت اج، سازگاری با ایکس باکس، جستجو و نمای وظایف ادغام شده با کورتانا می شود، تعدادی نوآوری وجود دارد که هر کاربر ویندوز 10 از آنها اطلاعی ندارد.

    و یکی از این نوآوری ها امکان نصب مستقیم محصولات نرم افزاری با استفاده از پوسته Windows PowerShell است که در ادامه این مقاله به آن پرداخته خواهد شد. علیرغم این واقعیت که این قابلیت در آوریل 2014 همراه با انتشار پیش‌نمایش Windows Management Framework 5.0 ظاهر شد، تنها با انتشار نهایی "ده" می‌توانست بومی شود. بنابراین، بیایید ببینیم کدام ماژول مسئولیت این عملکرد را بر عهده دارد و چگونه می توانید محصولات نرم افزاری را بدون دانلود فایل های نصب نصب کنید.

    ماژول Windows PowerShell OneGet

    با انتشار Windows Management Framework 5.0 Preview، Windows PowerShell اکنون چندین ویژگی جدید دارد که برای سهولت مدیریت رایانه ها طراحی شده است. این ویژگی‌ها شامل دو فناوری جالب هستند، یعنی: Windows PowerShell Desired State Configuration و Certified for Windows Network Switches.

    در مورد تکنولوژی Certified for Windows Network Switches، تعدادی cmdlet Windows PowerShell اضافه شده است که وظیفه مدیریت سوئیچ های شبکه دارای گواهی ویندوز را بر عهده دارند. یعنی 19 cmdlet جدید وجود دارد که می توانید با اجرای دستور "Get-Command *-NetworkSwitch*" در PowerShell پیدا کنید. از آنجایی که این فناوری کاملاً جدی است و مستحق توجه ویژه است، در این مقاله فقط به توضیح کوتاهی محدود می‌شوم و این فناوری را با جزئیات بیشتر در نظر نمی‌گیرم.

    اما ما باید در مورد فناوری دوم با جزئیات بیشتری صحبت کنیم. اگر Windows Management Framework 5 یا سیستم عامل Windows 10 را نصب می کنید، می توانید از ابزاری استفاده کنید که پیدا کردن و نصب نرم افزار بر روی رایانه شما را بسیار آسان تر می کند. OneGet چنین ابزاری است. OneGet یک تجمیع کننده مدیریت بسته است، یعنی ماژولی که از مخازن ویژه برای ارائه یک رابط واحد برای کشف، نصب و موجودی نرم افزار استفاده می کند. به عبارت دیگر، این فناوری از یک طرف مجموعه ای از cmdlet ها را ارائه می دهد که به کاربر نهایی امکان مدیریت بسته های نصب را می دهد (که در ادامه کمی در مورد آن صحبت خواهیم کرد) و از طرف دیگر یک رابط برای فروشنده نوشتن ارائه می کند. بسته ها

    قبل از شروع به درک خود ماژول، باید به تعاریف متعددی توجه کنید که ارتباط نزدیکی با این فناوری دارند، یعنی:

    • کیسه پلاستیکی. به طور خلاصه، بسته برنامه ای است که از یک منبع خاص با استفاده از هر سیستم مدیریت بسته موجود کامپایل و نصب می شود. به طور معمول، یک بسته کد کامپایل شده را با اطلاعات متا اضافی ارائه می دهد که ممکن است شامل توضیحات بسته، نسخه آن یا "وابستگی ها" باشد. یک سیستم مدیریت بسته، به عنوان مثال، برای به روز رسانی خودکار یک محصول نرم افزاری به نسخه جدید برای اطمینان از نصب تمام وابستگی های بسته، باید چنین اطلاعات متا را پردازش کند و در صورت لزوم، باید بسته های گم شده را به طور خودکار نصب کند.
    • مخزن. طبق ویکی‌پدیا، مخازن مکان‌هایی هستند که داده‌ها در آنجا ذخیره و نگهداری می‌شوند. اغلب، داده ها در یک مخزن به شکل فایل هایی ذخیره می شوند که برای توزیع بیشتر در شبکه در دسترس هستند. مخازن در ابتدا توسط سیستم های لینوکس استفاده می شد تا بسته های مورد نیاز برای اجرای سیستم را از مکان های دیگر نصب کنند. اکثر مخازن رایگان هستند، اما برخی از شرکت ها برای اشتراک پولی به مخازن خود دسترسی دارند. کمی در زیر در مورد مخازن OneGet صحبت خواهیم کرد.
    • مدیر بسته. این مجموعه ای از ابزارهای نرم افزاری است که مسئول خودکارسازی فرآیند نصب، به روز رسانی، پیکربندی و حذف بسته های نرم افزاری است. به طور معمول، بسته ها شامل یک پایگاه داده است که پیش نیازها و وابستگی های نرم افزار را مشخص می کند و همچنین اطلاعات نسخه محصول را برای جلوگیری از استفاده از نرم افزارهای خراب مشخص می کند. مدیران بسته شامل Linux apt-get یا NuGet هستند که بعداً در سیستم‌های ویندوز ظاهر شدند. به نوبه خود، OnetGet یک توسعه منطقی از NuGet است که به عنوان یک جمع کننده برای همه مدیران بسته های موجود به نام ارائه دهندگان کار می کند.

    مایکروسافت در ابتدا استفاده از اکثر ارائه دهندگان موجود را با ارائه یک مجموعه اولیه که به شما امکان می دهد ارائه دهندگان اضافی را برای مدیریت نرم افزار خود کشف و نصب کنید، محدود می کند. از جمله تامین کنندگان اصلی عبارتند از:

    • بوت استرپ- تامین کننده ای که به شما امکان می دهد تامین کنندگان دیگر را کشف کنید.
    • MSI- ارائه دهنده ای که برای پردازش فایل های MSI طراحی شده است.
    • M.S.U.- به نوبه خود، تامین کننده مسئول پردازش فایل های به روز رسانی مایکروسافت؛
    • ARP(افزودن/حذف برنامه ها) - تامین کننده ای که مسئول داده های موجودی در مورد هر محصول نرم افزاری است که در جزء "حذف یا تغییر برنامه" سیستم ثبت شده است.
    • PowerShellGet– ارائه دهنده ای که به شما امکان می دهد ماژول های مختلف PowerShell را مدیریت کنید.

    لیست کامل ارائه دهندگان OneGet به همراه توضیحات مختصر آنها را می توانید در لینک زیر مشاهده کنید.

    ماژول OneGet خود شامل 10 cmdlet Windows PowerShell است که بیشتر آنها در بخش بعدی این مقاله مورد بحث قرار خواهند گرفت. این cmdlet ها عبارتند از:

    • Find-Package – جستجوی بسته ها.
    • Get-Package - لیستی از تمام بسته های نصب شده بر روی رایانه را برمی گرداند.
    • Get-PackageProvider – فهرستی از ارائه دهندگانی را که در این رایانه به OneGet متصل هستند، برمی گرداند.
    • Get-PackageSource - فهرستی از منابع بسته را که برای یک ارائه دهنده بسته خاص ثبت شده اند، برمی گرداند.
    • Install-Package - به شما امکان می دهد یک یا چند محصول نرم افزاری را نصب کنید.
    • Register-PackageSource – افزودن منبع بسته برای ارائه دهنده بسته مشخص شده.
    • Save-Package - به شما امکان می دهد یک بسته را بدون نصب بعدی در رایانه محلی خود ذخیره کنید.
    • Set-PackageSource – منبع بسته را برای ارائه دهنده بسته مشخص شده تغییر دهید.
    • Uninstall-Package – حذف یک یا چند بسته نرم افزاری؛
    • Unregister-PackageSource - یک منبع بسته ثبت شده را حذف می کند.
      • نصب نرم افزار با استفاده از OneGet

        اکنون زمان خود فرآیند نصب نرم افزار فرا رسیده است. سپس خواهید دید که چگونه می توانید یک ارائه دهنده بسته را نصب کنید، نرم افزار مورد نیاز را پیدا کنید، آن را نصب کنید و همچنین چگونه می توانید یک برنامه غیر ضروری را حذف کنید و بسته نصب محصول نرم افزار را در رایانه خود دانلود کنید. بیایید به ترتیب شروع کنیم.

        نصب ارائه دهنده بسته Chocolatey

    1. Windows PowerShell را باز کنید و دستور را برای نمایش لیستی از منابع بسته که با OneGet در رایانه محلی شما ثبت شده است را اجرا کنید. Get-PackageSource. توجه داشته باشید که اگر تامین کننده بسته خاصی را در دستور مشخص کنید، cmdlet Get-PackageSource فقط منابعی را به شما نشان می دهد که با تامین کننده ای که شما مشخص کرده اید مرتبط هستند. در غیر این صورت، دستور تمام منابع بسته ثبت شده در OneGet را برمی گرداند. از آنجایی که ما باید منابع بسته را برای همه ارائه دهندگان مشاهده کنیم، دستور بدون هیچ پارامتر اضافی اجرا می شود. حتما توجه داشته باشید که در این مرحله یک ارائه دهنده بسته اضافی دارید که برای نصب محصولات نرم افزاری که هنوز نصب نشده اند استفاده می شود. خروجی دستور را در تصویر زیر مشاهده می کنید:

    2. همانطور که در تصویر قبلی مشاهده می کنید، ارائه دهنده Chocolatey بر روی دستگاه محلی ما نصب نشده است. بنابراین، این باید اصلاح شود. توجه داشته باشید که برای افزودن یک ارائه دهنده بسته، ExecutionPolicy PowerShell باید روی تنظیم شود بدون محدودیت. در غیر این صورت، نمی توانید تامین کننده را اضافه کنید. اجازه دهید به شما یادآوری کنم که cmdlet Get-ExecutionPolicyبه شما امکان می دهد سیاست های اجرایی را برای جلسه جاری نمایش دهید. سیاست اجرا بخشی از سیاست امنیتی Windows PowerShell است که تعیین می‌کند آیا فایل‌های پیکربندی می‌توانند بارگذاری شوند و اسکریپت‌ها را می‌توان اجرا کرد و کدام اسکریپت‌ها برای اجرا به امضای دیجیتال نیاز دارند. مقدار پیش فرض " محصور(فایل های پیکربندی را بارگذاری نمی کند و اسکریپت ها را اجرا نمی کند)، بنابراین اگر مقدار سیاست اجرا را تغییر نداده اید، دستور را اجرا کنید Set-Executionpolicy نامحدود. از آنجایی که محدوده سیاست اجرای پیش‌فرض LocalMachine است، به طوری که تنظیمات خط‌مشی فقط برای کاربر فعلی اعمال می‌شود، می‌توانید پارامتری را نیز به دستوری که اعمال می‌کنید اضافه کنید. -محدودهبا معنی کاربر فعلی. خروجی این دو دستور در شکل زیر قابل مشاهده است:

    3. در این مرحله، ما می توانیم لیست تامین کنندگانی را که در OneGet در رایانه فعلی ثبت شده اند، مشاهده کنیم. برای این کار می توانید از cmdlet استفاده کنید Get-PackageProvider. این cmdlet، همانطور که کمی در بالا ذکر کردم، لیستی از ارائه دهندگان بسته را که قبلاً به OneGet متصل شده اند، برمی گرداند. می‌توانید به‌صورت اختیاری نتایج را بر اساس تمام یا بخشی از یکی از نام‌های فروشنده فیلتر کنید. به عنوان مثال، برای اینکه ببینید کدام ارائه دهندگان در حال حاضر متصل هستند، باید cmdlet را اجرا کنید Get-PackageProviderبدون هیچ پارامتر اضافی همانطور که در تصویر زیر می بینید، در ابتدا من 4 تا از این ارائه دهندگان را به کامپیوترم متصل داشتم که امروز قبلاً در مورد آنها به شما گفته بودم. اکنون برای نصب ارائه دهنده Chocolatey بر روی رایانه خود باید دستور را اجرا کنید Get-PackageProvider –Name Chocolatey –ForceBootstrap، که در آن پارامتر –ForceBootstrap مسئول نصب خودکار ارائه دهنده است. توجه داشته باشید که معمولاً وقتی ارائه دهنده Chocolatey را نصب می کنید، ارائه دهنده NuGet نیز باید نصب شود. همانطور که در تصویر زیر مشاهده می کنید، پس از استفاده مجدد از cmdlet Get-PackageProvider، تامین کننده ای که نصب می کنیم باید قبلاً در لیست ظاهر شود:

    اکنون می‌توانیم یک لیست کامل از تمام بسته‌های موجود در ارائه‌دهندگان ایجاد کنیم و آن را به cmdlet لوله کنیم Export-CliXMLبرای ایجاد یک نمایش XML از اشیاء و ذخیره آنها در یک فایل XML. لطفاً توجه داشته باشید که لیستی که صادر می کنید دائماً در حال تغییر است و با گذشت زمان بسته های بیشتری به مخازن مورد استفاده شما اضافه می شود. بر این اساس، به یاد داشته باشید که هر از چند گاهی فایلی را که صادر می کنید جایگزین کنید. برای صادرات لیستی از بسته ها و ذخیره این لیست در پوشه C:\TestPosh، باید دستور زیر را اجرا کنید: Find-Package | Export-CliXML C:\TestPosh\Test.xml

    لطفا توجه داشته باشید که روند صادرات قطعا مدتی از شما را خواهد گرفت. پس از اتمام اجرای دستور و ایجاد یک فایل XML بر روی رایانه شما، آن را وارد کنید و برای سهولت مشاهده، از خط لوله و دستور استفاده کنید. GridViewکه وظیفه نمایش نتایج اجرای دستورات را در پنجره در قالب یک جدول تعاملی بر عهده دارد، می توانید ببینید کدام بسته ها برای نصب در دسترس خواهند بود. طبیعتاً می‌توانید این لیست بسته‌ها را با استفاده از هر برنامه‌ای که قادر به پردازش فایل‌های XML است، برای مثال با استفاده از Excel باز کنید. این دستور همانطور که در تصویر زیر می بینید به شکل زیر است: Import-CliXML C:\TestPosh\Test.xml | Out-GridView

    از آنجایی که ارائه دهنده قبلاً نصب شده است، می توانید به قسمت بعدی این روش یعنی

    نصب نرم افزار با استفاده از PowerShell

    قبل از نصب محصولات نرم افزاری، باید به آنچه قبلاً روی رایانه نصب شده است نگاه کنیم. برای انجام این کار می توانید از cmdlet استفاده کنید دریافت بسته، که لیستی از تمام بسته های نرم افزاری نصب شده بر روی رایانه محلی را از طریق OneGet یا سایر ابزارهای نصب برنامه برمی گرداند. به صورت اختیاری، می توانید cmdlet را نیز اجرا کنید دریافت بستهو در رایانه های راه دور با اجرای آن به عنوان بخشی از دستور فراخوانی، دستور Enter-PSSession یا یک اسکریپت.

    اگر می خواهید اطلاعاتی در مورد نرم افزار خاصی به دست آورید، به عنوان مثال، در مورد محصولات نصب شده مایکروسافت آفیس 2013، می توانید از پارامتر –Name با مقدار مناسب همراه با این cmdlet استفاده کنید، برای مثال، دریافت بسته - نام "office 2013". خروجی این cmdlet در زیر قابل مشاهده است:

    قبل از نصب نرم افزار، بیایید سعی کنیم تصمیم بگیریم که چه چیزی را باید نصب کنیم. از آنجایی که فقط Office 2013 و چند برنامه دیگر بر روی دستگاه نصب شده است، سپس به شما نشان خواهم داد که چگونه می توانید محصولات نرم افزاری مانند Adobe Creative Cloud، Adobe Reader، Notepad++، و همچنین Process Explorer، Process Monitor و WinRar را نصب کنید.

    با توجه به اینکه قبل از مراحل نصب باید خود بسته ها را بومی سازی کنیم، باید از قابلیت های cmdlet استفاده کنیم. Find-Package. همانطور که قبلاً متوجه شدید، این cmdlet به شما امکان می دهد بسته های نصب را در منابع بسته موجود در رایانه محلی جستجو کنید. اگر از هیچ پارامتری با این cmdlet استفاده نکنید، دستور یک لیست کامل از همه برنامه ها را نمایش می دهد، همانطور که قبلا ذکر شد.

    به عنوان مثال، ابتدا بیایید سعی کنیم برنامه های Adobe را پیدا کنیم که برای نصب از ارائه دهنده Chocolatey که اضافه کردیم در دسترس هستند. برای انجام این کار، علاوه بر خود cmdlet، کافی است پارامتر را نیز مشخص کنید -نامو محصول نرم افزاری مورد نظر را به عنوان مقدار آن وارد کنید. از آنجایی که بسته های نصب ممکن است بعد از کلمه Adobe نام محصول داشته باشند، باید نام محصول را به صورت زیر وارد کنید: Adobe*، همانطور که در تصویر زیر نشان داده شده است. همانطور که می بینید، ماژول OneGet بسته نصب زیر را در مخزن شناسایی کرد: adobe-creative-cloudنسخه 1.0. در اصل این یکی از محصولاتی است که شما به دنبال آن هستید، یعنی باید نصب شود. برای انجام این کار، همانطور که در تصویر زیر نیز مشاهده می شود، باید از قابلیت های cmdlet استفاده کنید. نصب-بسته. برای نصب Creative Cloud دستور زیر را اجرا کنید Install-Package -نام adobe-creative-cloud –Force، که در آن پارامتر Force، همانطور که در PowerShell معمول است، محدودیت هایی را لغو می کند که از اجرای دستور تا زمانی که تغییرات شروع به نقض الزامات امنیتی می کند، جلوگیری می کند. خروجی این دستورات را می توان در شکل زیر مشاهده کرد:

    حال، پس از نصب اولین محصول نرم افزاری، بیایید سعی کنیم نسخه خاصی از Adobe Reader را جستجو کنیم. برای انجام این کار، علاوه بر دستور از قبل شناخته شده Find-Package - نام AdobeReaderپارامتر باید اضافه شود -همه نسخه هاکه تمام نسخه های موجود یک بسته یا تمام نسخه های یک بسته را که در محدوده مشخص شده در پارامترها هستند برمی گرداند. MinimumVersionو MaximumVersion. لطفاً توجه داشته باشید که این پارامتر اختیاری است، زیرا جستجو در ابتدا آخرین نسخه محصول نرم افزار را نشان می دهد. حالا باید از بین تمامی نسخه های موجود، نسخه ای که باید روی کامپیوتر نصب شود را انتخاب کنیم، مثلاً اجازه دهید نسخه باشد. 2015.007.20033 . برای نصب این نسخه خاص از خواننده، دستور را دنبال کنید Install-Package -نام AdobeReaderپارامتر اضافه کنید -RequiredVersionبا معنی 2015.007.20033 ، که نسخه دقیق بسته ای را که می خواهید نصب کنید مشخص می کند. همچنین می توانید حداکثر نسخه موجود محصول را با افزودن پارامتر نصب کنید MaximumVersionبا معنی مربوطه خروجی این دستورات را می توان در شکل زیر مشاهده کرد:

    اگر نیاز به نصب آخرین نسخه یک محصول نرم افزاری دارید و در عین حال نمی خواهید چندین دستور را در PowerShell تایپ کنید، می توانید جستجو و نصب بسته را با استفاده از خط لوله تعمیم دهید. برای مثال، اگر آخرین نسخه ویرایشگر متن Notepad++ را نصب می‌کنید، می‌توانید دستور زیر را اجرا کنید: Find-Package -Name NotepadPlusPlus | Install-Package - Force. بنابراین، یک بسته را در مخزن جستجو می کنید و اگر نتیجه ای پیدا کردید، بلافاصله آن را در حالت بی صدا نصب کنید. مراحل نصب این محصول نرم افزاری در زیر نشان داده شده است:

    اکنون، از آنجایی که با توجه به وظیفه بالا، نصب Process Explorer، Process Monitor و WinRar باقی مانده است، بیایید سعی کنیم چندین بسته نرم افزاری را همزمان نصب کنیم. برای انجام این کار، بهتر است بدانید که این بسته ها در خود مخزن دقیقاً چه نامیده می شوند. همانطور که قبلا نوشتم، این را می توان با استفاده از cmdlet بررسی کرد Find-Package | Out-GridView. پس از مشخص شدن نام بسته ها، می توانید به نصب خود ادامه دهید. برای این کار می توانید دستور زیر را اجرا کنید: Find-Package -Name procexp، procmon، winrar | نصب-بسته. در این مثال، همانطور که در تصویر زیر می بینید، من به طور خاص پارامتر را مشخص نمی کنم زورتا بتوانید به کل فرآیند نصب چندین بسته نرم افزاری به طور همزمان توجه کنید.

    ذخیره و حذف برنامه ها

    دو cmdlet آخر که در این مقاله به آنها پرداخته خواهد شد وظیفه ذخیره بسته نصب و حذف برنامه نصب شده را بر عهده دارند. بیایید با صرفه جویی شروع کنیم.

    برای ذخیره بسته نصب می توانید از cmdlet بعدی ماژول OneGet یعنی ماژول استفاده کنید Save-Package. این cmdlet به شما امکان می دهد بسته ها را در رایانه محلی خود ذخیره کنید بدون اینکه بعداً آنها را نصب کنید. به طور پیش فرض، این cmdlet آخرین نسخه محصول نرم افزار را ذخیره می کند، اما اگر پارامتر را به cmdlet فعلی اضافه کنید همه نسخه ها، تمام نسخه های برنامه ای که انتخاب کرده اید در رایانه شما ذخیره می شود. علاوه بر این، مشابه پارامترهای جستجو و نصب برنامه های cmdlets، علاوه بر ذخیره تمامی نسخه ها، با استفاده از پارامترها -MaximumVersionو – MinimumVersion، همچنین می توانید طیف وسیعی از نسخه های بسته را که می خواهید نگه دارید انتخاب کنید. برای ذخیره بسته در رایانه خود، علاوه بر گزینه نامو در صورت لزوم یک پارامتر مسئول نسخه محصول، باید پارامتر را مشخص کنید مسیربا مکان آینده نصب کننده شما.

    همانطور که در شکل زیر مشاهده می کنید، دستور Save-Package –Name Procexp –Path C:\TestPoshآخرین نسخه Process Explorer را در پوشه C:\TestPosh ذخیره می کند:

    اگر به طور تصادفی بسته اشتباهی را نصب کردید، همیشه می توانید از ماژول OneGet برای حذف آن استفاده کنید. برای این کار از cmdlet استفاده می شود Uninstall-Package. مانند بقیه cmdlet های این ماژول، برای حذف یک برنامه باید پارامتر Name را با نام برنامه مربوطه مشخص کنید و همچنین برای حذف بی صدا، می توانید از پارامتر Force استفاده کنید. به عنوان مثال، برای حذف WinRAR قبلاً نصب شده از رایانه خود، باید دستور زیر را اجرا کنید: Uninstall-Package –نام WinRAR –Forceمانند زیر:

    نتیجه

    از این مقاله با یکی از ویژگی های سیستم عامل جدید مایکروسافت یعنی نصب محصولات نرم افزاری با استفاده از پوسته فرمان Windows PowerShell آشنا شدید. من در مورد خود ماژول OneGet، اصطلاحات اولیه استفاده شده در کنار این فناوری و ارائه دهندگان بسته از پیش نصب شده به شما گفتم. شما یاد گرفتید که چگونه می توانید یک ارائه دهنده بسته شخص ثالث را به OneGet متصل کنید و چگونه می تواند به شما در یافتن، نصب، ذخیره و حذف نرم افزار کمک کند.

    امیدوارم این اطلاعات برای شما مفید بوده باشد و چیز جدیدی یاد گرفته باشید. اگر در مورد مطالب در این مقاله سؤالی دارید، آنها را در نظرات بپرسید، خوشحال خواهم شد که هر گونه کمکی را ارائه دهم.

    VN:F

    امتیاز: 9.9/ 10 (18 رای داده شده)

    نصب برنامه ها با استفاده از PowerShell در ویندوز 10, امتیاز 9.9 از 10 بر اساس 18 امتیاز

    Windows PowerShell یک پوسته خط فرمان و زبان برنامه نویسی قدرتمند است که برای مدیریت سیستم طراحی شده است. Windows PowerShell یک ابزار عالی برای مدیریت و خودکارسازی مدیریت سیستم عامل ویندوز و همچنین برنامه های کاربردی تحت ویندوز است.

    من از طرفداران سرسخت اسکریپت های vbs بودم. چون متوجه شدم برای کارهایی که قبلاً از دلفی استفاده می کردم، زبان برنامه نویسی vbs کاملاً مناسب است. از این گذشته ، باز کردن یک دفترچه یادداشت ، انداختن چند خط در آنجا ، ذخیره فایل با پسوند مورد نظر و اجرای اسکریپت بسیار راحت تر است. برای این کار نیازی به نصب چیزی ندارید مثلا دلفی که پولی هم هست.

    اگرچه vbs بد نیست، جانشین آن PowerShell عملکرد بسیار گسترده تری دارد.

    من یک اسکریپت vbs دارم که به طور خودکار تصاویر را در یکی از وبلاگ ها منتشر می کند. بسته به وضوح تصویر اضافه شده، نیاز به تراز کردن تصویر در عرض یا ارتفاع وجود داشت. و بنابراین من نتوانستم وضوح تصاویر را با استفاده از اسکریپت vbs بدست بیاورم، اما این کار بسیار ساده از طریق PowerShell انجام می شود.

    اگر با شروع ویندوز 7، PowerShell با خود ویندوز همراه است.، سپس در ویندوز XP باید آن را دانلود و نصب کنید - دانلود PowerShell V2 برای ویندوز XP SP3.

    نسخه پنجم پاورشل را می توانید از لینک: microsoft.com دانلود کنید، همچنین توضیح می دهد که کدام فایل را برای سیستم عامل مورد نظر دانلود کنید و چگونه آن را نصب کنید.

    چگونه به اسکریپت های محلی PowerShell اجازه اجرا دهیم؟

    به طور پیش فرض، ویندوز به دلایل امنیتی اجازه اجرای اسکریپت های PowerShell را نمی دهد. باید به اسکریپت های محلی اجازه اجرا بدهید. دستور را در کنسول اجرا کنید (این اجازه را به اجرای اسکریپت های محلی و اسکریپت های دانلود شده امضا شده با یک گواهی قابل اعتماد می دهد):

    powershell -Command Set-ExecutionPolicy RemoteSigned

    در غیر این صورت، وقتی می خواهید اسکریپت خود را اجرا کنید، این متن را مشاهده خواهید کرد:

    فایل C:\ImageSize.ps1 نمی تواند بارگیری شود زیرا برنامه نویسی در این سیستم مجاز نیست. برای اطلاعات بیشتر «get-help about_signing» را تایپ کنید.
    + CategoryInfo: NotSpecified: (:)، ParentContainsErrorRecordException
    + FullyQualifiedErrorId: RuntimeException

    برای تغییر مجدد این سیاست امنیتی، بنویسید:

    powershell -Command Set-ExecutionPolicy محدود شده است

    برای اینکه اجازه دهید هر اسکریپتی بدون بررسی امضا اجرا شود، بنویسید:

    powershell -Command Set-ExecutionPolicy نامحدود

    اگر هنگام اجرای اسکریپت پیام زیر را مشاهده کردید:

    هشدار امنیتی فقط اسکریپت هایی را اجرا کنید که به آنها اعتماد دارید. در حالی که اسکریپت های اینترنت می توانند مفید باشند، این اسکریپت به طور بالقوه می تواند به رایانه شما آسیب برساند. آیا می خواهید \server\scripts\my.ps1 را اجرا کنید؟ [D] [R] یک بار اجرا نشود [S] Suspend [?] راهنما (پیش‌فرض "D" است): d

    و اگر می خواهید از شر آن خلاص شوید، هنگام اجرای اسکریپت، از پارامتر -ExecutionPolicy Bypass استفاده کنید.

    Powershell -ExecutionPolicy Bypass -file "\\server\scripts\my.ps1"

    چگونه یک اسکریپت PowerShell را اجرا کنیم؟

    دستور را در خط فرمان وارد کنید

    Powershell -فایل your-script-name.ps1

    جایی که your-script-name.ps1 نام اسکریپت شماست. فایل های اسکریپت PowerShell دارای پسوند *.ps1 هستند

    Windows PowerShell Help یا Help

    PowerShell دارای cmdlet های مختلفی برای دریافت کمک خاص است. اما مهمترین آنها این است: Get-Help

    دستورات را در کنسول وارد کنید:

    powershell -command Get-Help

    powershell -command Get-Help -؟

    و دو توصیف مختلف دریافت خواهید کرد که مکمل یکدیگر در مورد نحوه استفاده از کمک هستند.

    گزینه های کمک بسیار گسترده هستند، با مثال ها و توضیحات مفصل به زبان روسی. بنابراین می توانید آن را در قالب های مختلف نمایش دهید.

    مثلا:

    • powershell -command Get-Help Get-Help - راهنمای کلی برای cmdlet Get-Help
    • powershell -command get-help Get-Help -نمونه هایی - نمونه هایی از نحوه استفاده از cmdlet get-help
    • powershell -command get-help Get-Help -detailed - راهنمای مفصل برای cmdlet get-help
    • powershell -command get-help Get-Help -full - کامل ترین راهنما برای cmdlet get-help

    winintro.ru/windowspowershellhelp.ru/ - کمک در قالب یک کتاب html

    نکاتی در مورد Windows Powershell:

    اپراتورهای مقایسه

    • -eq - برابر - برابر
    • -ne - مساوی نیست - مساوی نیست
    • -ge - بزرگتر یا مساوی - بیشتر یا برابر
    • -gt - بزرگتر از - بیشتر
    • -lt - کمتر از - کمتر
    • -le - کمتر یا مساوی - کمتر یا برابر
    • -مانند - مقایسه عام - استفاده از کاراکترهای عام برای مطابقت با یک الگو
    • -notlike - مقایسه حروف عام - از کاراکترهای عام برای مطابقت با یک الگو استفاده کنید
    • -match - مقایسه عبارات منظم - از عبارات منظم برای مطابقت با یک الگو استفاده کنید
    • -notmatch - مقایسه عبارات منظم - از عبارات منظم برای پیدا کردن یک الگوی مطابقت استفاده کنید
    • -replace - Replace operator - بخشی یا تمام مقدار سمت چپ عملگر را جایگزین می کند
    • -contains - Containment operator - تعیین می کند که آیا مقدار سمت چپ عملگر حاوی مقدار سمت راست است یا خیر. نتیجه یک مقدار بولی است
    • -notcontains - Containment operator - تعیین می کند که مقدار سمت چپ عملگر حاوی مقدار سمت راست نباشد. نتیجه یک مقدار بولی است

    به طور پیش فرض، عملگرهای مقایسه به حروف بزرگ و کوچک حساس نیستند.
    برای مقایسه حساس به حروف بزرگ، دستور با پیشوند "c" است. به عنوان مثال، عملگر -eq حساس به حروف کوچک و بزرگ به "-ceq" تغییر می کند.
    برای مقایسه صریح و بدون حساس به حروف بزرگ، دستور با پیشوند "i" است. مثال: عملگر -replace حساس به حروف کوچک -ireplace خواهد بود

    • -is - یک نوع است
    • -isnot - یک نوع نیست
    • -as - به عنوان نوع، در صورت عدم موفقیت در تبدیل، هیچ خطایی وجود ندارد

    عملگرهای منطقی PowerShell:

    • -و - هر دو شرط باید درست باشد تا عبارت درست باشد
    • -یا - یک یا هر دو شرط باید درست باشد تا عبارت درست باشد
    • -xor - یک شرط باید درست باشد و شرط دوم باید نادرست باشد تا عبارت درست باشد
    • -not - شرایط مشخص شده باید به false ارزیابی شود تا عبارت درست باشد
    • ! - شرط مشخص شده باید به false ارزیابی شود تا عبارت درست باشد

    $myVar -is "String" $myVar -eq 123 $myVar -ceq $myVar2 "abcdef" -مانند "abc*" "abcdef" -جایگزین "dEf"،"xyz" $myVar1 -"رشته" -و $myVar2 -"Int" است (1 -eq 1) -and -not (2 -gt 2)

    عملیات رشته

    #رشته را بر اساس فاصله تقسیم کنید: $string = "رشته آزمایشی" $string.split(" ") $string.IndexOf(" ") #اولین فاصله در $string را جستجو کنید # نمایه مبتنی بر صفر اولین رخداد را برمی‌گرداند. از PS> "abcdeabcde". indexOf("cde") 2 # موقعیت شاخص شمارش شده از آخرین وقوع کاراکتر مشخص شده را برمی‌گرداند. > "abcdefgh".Substring(1) bcdefgh # یک زیر رشته شروع شده از موقعیت 1 و 4 کاراکتر را برمی گرداند PS> "abcdefgh".Substring(1,4) bcde # درج یک زیر رشته از موقعیت 0 PS> "abcdefgh".insert( 0"X") Xabcdeabcde # حذف از موقعیت 0 طول 2 PS> "abcdefgh".remove(0,2) cdeabcde # خاصیت شی - طول رشته PS> "abcdefgh".length 8 # اگر رشته حاوی زیررشته باشد، True را برمی‌گرداند. "cde" PS> "abcdefgh" .Contains("cde") True # اگر رشته با رشته فرعی "abc" شروع شود، درست است. رشته فرعی "fgh" PS> "abcdefgh".endsWith("fgh" ) True # اگر رشته حاوی زیر رشته "cde" باشد PS> $"abcdefgh" -مانند "*cde*" True # آرایه ای را برمی گرداند که در آن " d" جداکننده است PS> "abcdefgh" -split "d" abc efgh # یک رشته به هم پیوسته از دو ":" - جداکننده PS> "abcdefgh"، "xyz"-join ";" را برمی‌گرداند. abcdefgh;xyz # رشته‌ای را برمی‌گرداند که در آن "abc" با "XYZ" جایگزین خواهد شد. .ToUpper( ) ABCDEFGH # رشته ای را برمی گرداند که در آن کاراکترها به حروف کوچک تبدیل می شوند PS> "ABCDEFGH".ToLower() abcdefgh

    متغیرهای از پیش تعریف شده

    $خانه– دایرکتوری کاربر
    $NULL- خالی
    $راست- درست است، واقعی
    $ نادرست- کلبه
    $DebugPreference– “Continue” اطلاعات اشکال زدایی را نمایش می دهد، “SilentlyContinue” اطلاعات اشکال زدایی را نمایش نمی دهد. دستور Write-Debug را ببینید

    کار با فایل ها

    $string | Out-File $file -Append #Append $string با یک خط جدید به فایل $file $string = get-content -Path $file #دریافت محتویات فایل در $string $file $jokes = ::ReadAllText($ file) #خواندن کل فایل در یک خط Test-Path "C:\test.txt" #وجود فایل را بررسی کنید

    همه فایل‌های با پسوند پسوندی خاص را در یک فهرست و زیر شاخه‌ها پیدا کنید.
    سپس این فایل ها را در دایرکتوری دیگری کپی کنید.

    $flist = get-childitem e:\doc\* -include *.pdf -recurse $flist | ForEach-Object($_.CopyTo("e:\doc\all_pdf\" + $_.PSChildName)) ls d:\ | ?($_.psiscontainer) | نام کامل را انتخاب کنید #فقط نمایش دایرکتوری ها ls d:\ | ?(!$_.psiscontainer) | انتخاب نام کامل #نمایش فقط فایل‌ها $local = Get-Location #دایرکتوری فعلی $local.Path # پوشه کاری $local.Drive.Root # Root $local.Drive.Name # حرف درایو $local.Drive.Used # درایو استفاده شده $local .Drive.Free # رایگان روی دیسک

    نمایش نام کامل فایل‌ها در درایو D: که از 1 ژوئن 2014 تا 20 سپتامبر 2014 تغییر کرده است:

    Ls d:\ -recurse | ?(!$_.psiscontainer) | نام کامل،LastWriteTime | را انتخاب کنید Where-Object ($_.LastWriteTime -ge "01/06/2014" -و $_.LastWriteTime -le "09/20/2014")

    نمایش متن روی صفحه

    # متنی که باید به آن توجه کنید. با رنگ زرد برجسته شده است. Write-Warning("متنی که نیاز به توجه دارد") # فقط متن را نمایش می دهد Write-Host("Just text") #enabled اشکال زدایی اطلاعات $DebugPreference = "ادامه" # نمایش داده شده اطلاعات اشکال زدایی Write-Debug "نمی توان فایل را باز کرد." # خروجی اشکال زدایی غیرفعال $DebugPreference = "Silently Continue"

    چند ثانیه مکث کنید

    Start-Sleep -s 15 # به مدت 15 ثانیه مکث کنید

    تا زمانی که Enter را فشار دهید، کنسول را مکث کنید

    خواندن میزبان "Enter را فشار دهید"

    کار با فرآیندها

    #وظیفه: کشتن تمام فرآیندهای با نام Notepad # Method #1 get-process Notepad | Stop-Process # Method #2 (فقط با یک فرآیند کار می‌کند) $plist = نوت‌پد دریافت فرآیند $plist.Kill() # روش شماره 3 (همان 2، اما همه فرآیندها) $plist = دفترچه یادداشت دریافت فرآیند $plist | ForEach-Object ($_.Kill()) #دریافت فرآیندها و تاریخ شروع آنها: Get-Process| قالب-نام جدول،StartTime -AutoSize

    افزایش

    $i++ - در زمان فراخوانی مقدار i قدیمی است، اما پس از آن 1++ افزایش می یابد.

    ++$i - در لحظه فراخوانی i 1 افزایش می یابد

    آرایه ها

    آرایه $ = 17,15,160 #آرایه ای از سه عنصر ایجاد کرد. آرایه $array = @ ("adsf"،"adf"،"erge") $array = $array |؟ ($_ -ne "adf") #فقط عناصر آرایه منحصر به فرد را دریافت کنید $a = @(1,2,3,4,5,5,6,7,8,9,0,0) $a = $a | انتخاب -uniq #index اولین رخداد عنصر در آرایه $array.indexOf("cde")

    اگر ساخت السیف السی

    if ($i -eq 0) ( Write-Host("i صفر است") ) ElseIf ($i -eq 1) ( Write-Host("i is one") ) Else ( Write-Host("i is not" برابر صفر یا یک")

    برای هر حلقه

    $services = Get-Service ForEach ($service in $services) ($service.Stop() ) 65 #تبدیل کد اسکی به کاراکتر "A" #تبدیل کاراکتر به کد اسکی "Hello" #تبدیل رشته به کدهای اسکی

    ما منتظریم تا هر کلیدی فشار داده شود:

    $HOST.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") | OUT-NULL $HOST.UI.RawUI.Flushinputbuffer() $host.ui.RawUI.WindowTitle = "elimS عنوان پنجره" #задаем заголовок окна !}

    انواع داده ها در پاورشل

    رایج ترین انواع:

    رشته ای با طول ثابت از کاراکترهای یونیکد یک کاراکتر یونیکد 16 بیتی یک کاراکتر بدون علامت 8 بیتی اعداد صحیح امضا شده 32 بیتی امضا شده 64 بیتی عدد صحیح بولی درست/نادرست یک مقدار اعشاری 128 بیتی یک عدد ممیز شناور 32 بیتی دقیق. -شماره نقطه شناور دقیق 64 بیتی تاریخ و زمان شی Xml آرایه ای از مقادیر شی Hashtable

    ثابت های داخلی نیز وجود دارد: $true،$false، $null

    یونیکد:برای رمزگذاری یک کاراکتر Unicode در یک رشته PowerShell، پیشوند یونیکد را با 0x قرار داده و آن را به System.Char ارسال کنید:

    PS > 0x263a ☺

    تبدیل نوع داده

    برای تبدیل اجباری به یک نوع داده خاص، پیشوند مقدار یا متغیر را با نوع در پرانتز قرار دهید، این به عنوان یک شناخته می شود. اپراتور بازیگرانو نوع داده انتخابی را مجبور می کند:

    PS C:\> "0064" 64 PS C:\> $false 0 PS C:\> ("0x" + "FF") 255

    تست انواع داده ها

    PS C:\>32 -is
    PS واقعی C:\> $true -is
    درست است، واقعی

    توابع در Powershell

    تابع elimS ( #تابع دارای چندین پارامتر ورودی پارامتر ($string = "مقدار پیش فرض"، $integer = 7) #پارامترهای ورودی write-host "string = " $string " | integer = " $integer ) elimS #عملکرد بدون تعریف فراخوانی می شود. از پارامترها، پارامترها مقدار پیش فرض را خواهند گرفت $string = "test string" $integer = 911 elimS $string $integer #به این صورت است که تابع را به درستی فراخوانی کنیم - ما پارامترها را با فاصله elimS -integer $integer -string جدا می کنیم. $string #this نیز صحیح است $global:var1 = "test" یک متغیر سراسری است، بنابراین می توانید مقدار متغیرها را از توابع ارسال کنید.

    اطلاعات بیشتر در مورد نحوه ارسال چندین پارامتر به یک تابع:

    باقی مانده

    get-host #show powershell نسخه Clear-RecycleBin c: -اجباری #تخلیه سطل بازیافت فشرده سازی-بایگانی -مسیر C:\test\* -DestinationPath C:\archive\test1.zip #بایگانی پوشه Expand-Archive -Path C :\temp \test1.zip "C:\test\New folder\" #بایگانی را باز کنید (Get-CimInstance Win32_operatingSystem).lastbootuptime #نمایش زمان بوت سیستم نوشتن-میزبان $sleep_array.GetType().FullName #نمایش سوئیچ نوع متغیر ($a) (# مورد - مضرب اگر 1 ($b = $b+10 ) 2 ($b = $b+20 ) 3 ($b = $b+30 ) 4 ($b = $b+40 ) پیش فرض ($b = $b+50) ) Get-Content -Path "C:\scripts\test.txt" -صبر کنید #analogue of tail در لینوکس

    cmdlet های Powershell

    مرتب سازی شی- اشیا را به ترتیب صعودی یا نزولی بر اساس مقادیر خصوصیات اشیاء مرتب می کند. شما می توانید یک ویژگی یا چندین ویژگی را تنظیم کنید (مرتب سازی بر اساس کلیدهای متعدد)، و می توانید انتخاب کنید که آیا به حروف حساس یا غیر حساس به حروف بزرگ و کوچک مرتب شوند. همچنین می توانید کاری کنید که cmdlet Sort-Object فقط اشیایی با مقادیر منحصر به فرد را برای یک ویژگی خاص نمایش دهد.

    کپی مورد- یک عنصر را از یک مکان در فضای نام به مکان دیگر کپی می کند. cmdlet Copy-Item موارد کپی شده را حذف نمی کند. انواع عناصری که cmdlet می تواند کپی کند با در دسترس بودن ارائه دهندگان Windows PowerShell تعیین می شود. به عنوان مثال، هنگامی که از cmdlet با ارائه دهنده FileSystem استفاده می کنید، فایل ها و پوشه ها کپی می شوند و زمانی که از ارائه دهنده Registry استفاده می کنید، کلیدهای رجیستری و ورودی ها کپی می شوند.

    انتقال آیتم- یک عنصر، شامل خصوصیات، محتوا و فرزندان آن را از یک مکان به مکان دیگر منتقل می کند. هر دو مکان داده شده باید توسط یک ارائه دهنده پشتیبانی شوند. به عنوان مثال، می توانید یک فایل یا زیر شاخه را از یک دایرکتوری به دایرکتوری دیگر منتقل کنید یا می توانید یک کلید فرعی رجیستری را از یک کلید به کلید دیگر منتقل کنید. هنگامی که یک عنصر را جابجا می کنید، در محل اصلی خود حذف می شود و در یک عنصر جدید ایجاد می شود.

    حذف - آیتم- یک یا چند عنصر را حذف می کند. این cmdlet توسط بسیاری از فروشندگان پشتیبانی می شود، بنابراین می تواند انواع مختلفی از موارد، از جمله فایل ها، دایرکتوری ها، کلیدهای رجیستری، متغیرها، نام های مستعار و توابع را حذف کند.

    Get-ChildItem- عناصر را از مکان های داده شده دریافت می کند. اگر عنصر یک کانتینر باشد، این cmdlet عناصری را از ظرف بازیابی می کند که به آنها عناصر فرزند می گویند. می‌توانید از گزینه Recurse برای بازیابی آیتم‌ها از همه محفظه‌های فرزند استفاده کنید. مکان می تواند یک مکان سیستم فایل، مانند یک دایرکتوری، یا مکانی ارائه شده توسط ارائه دهنده دیگری، مانند یک کندو رجیستری یا یک فروشگاه گواهی باشد.

    گزینه های cmdlet Powershell

    -ErrorAction- این پارامتر در تمام cmdlet ها وجود دارد؛ به شما اجازه می دهد تا در صورت بروز خطا، اقدامی را که باید انجام شود را مشخص کنید:

    • ادامه - یک پیام خطا نمایش داده و اجرا را ادامه دهید
    • SilentlyContinue - خطا را نادیده بگیرید و ادامه دهید
    • توقف - اجرای با اولین خطا متوقف می شود
    • پرس و جو - اگر خطایی رخ داد، درخواستی برای کارهای بعدی نمایش دهید

    مثال: Copy-Item "d:\test1\klbackup*" "d:\test2\" -ErrorAction stop

    -چه می شود اگر- پیامی را نمایش می دهد که نتیجه یک دستور را بدون اجرای واقعی آن توصیف می کند. در تمام cmdlet ها وجود دارد.

    get-help about_CommonParameters- شرح پارامترهایی که می توان با هر cmdlet استفاده کرد.

    SSH از طریق Powershell

    مثالی از اینکه چگونه می توانید از طریق SSH کار کنید:

    #نصب ماژول SSH، یک بار Find-Module Posh-SSH | Install-Module #Create an SSH Session: Import-Module Posh-SSH $ComputerName = "1.2.3.4" $UserName = "ubuntu" $KeyFile = "C:\SSH\key.pem" $nopasswd = سیستم جدید شی. امنیت .SecureString $Crendtial = New-Object System.Management.Automation.PSCredential ($UserName, $nopasswd) $SSHSession = New-SSHSession -ComputerName $ComputerName -Credential $Crendtial -KeyFile =Reate $KeyFill $S: SSHSession | New-SSHShellStream # دستور $SSH.WriteLine("ifconfig") را ارسال می کند # پاسخ را بخوانید $SSH.read() # جلسه را ببندید: $sshSession | حذف-SSHSession

    تیم ها:

    • Get-SSHTrustedHost - میزبان های مورد اعتماد را مشاهده کنید
    • Get-SSHSession - لیست جلسات باز را مشاهده کنید
    • Remove-SSHSession - بستن جلسه

    توجه داشته باشید.شما می توانید از این ماژول بدون نصب WMF 5.0 استفاده کنید. نسخه پیش‌نمایش ماژول برای PS 4.0 و 3.0 به طور جداگانه در دسترس است - مارس 2016، و موارد جدیدتر را در مرکز دانلود برای PackageManagement PowerShell Modules Preview جستجو کنید.

    نصب برنامه ها

    این مثال چهار برنامه و مجموعه کاملی از ابزارهای Sysinternals را از مخزن Chocolatey نصب می کند. سه دستور اول یک بار اجرا می شوند و تغییر خط مشی باید تایید شود. فرمان چهارم برنامه های لیست شده را بی سر و صدا نصب می کند و فرمان پنجم به سادگی در زمان صرفه جویی می کند.

    #اجازه نصب بسته‌های امضاشده از اینترنت Set-ExecutionPolicy RemoteSigned #نصب ارائه‌دهنده Chocolatey Get-PackageProvider –Name Chocolatey -ForceBootstrap #Make Chocolatey trusted Set-PackageSource -Name Chocolatey -Trusted #InstallPVL,Programs,FirePackage filezilla، sysinternals -Verbose -Force -ProviderName chocolatey #افزودن مسیر به فایل‌های اجرایی (sysinternals) به PATH setx PATH "$env:path;C:\Chocolatey\bin" -m

    تامین کننده بسته ای را در C:\Chocolatey\lib دانلود می کند که بر اساس اسکریپت chocolateyInstall.ps1 است. این برنامه نصب کننده برنامه را از وب سایت رسمی در پوشه %temp%\Chocolatey دانلود می کند و آن را در حالت نصب بی صدا اجرا می کند. ساده ترین مثال Notepad++ است.

    Install-ChocolateyPackage "notepadplusplus" "exe" "/S" "https://notepad-plus-plus.org/repository/6.x/6.9/npp.6.9.Installer.exe"

    جستجوی برنامه ها

    برنامه های زیادی در مخازن وجود دارد، همه محبوب ترین آنها قطعا وجود دارد.

    Find-Package "*zip*"،"*commander*" -ProviderName Chocolatey

    انواع نصب کننده و کلیدهای نصب بی صدا

  • سایت نصب خودکار ویندوز و انجمن نصب خودکار برنامه
  • نصب به روز رسانی ویندوز از طریق Powershell

    • ماژول PowerShell Windows Update را از وب سایت مایکروسافت دانلود کنید.
    • بایگانی را در پوشه %WINDIR%\System32\WindowsPowerShell\v1.0\Modules باز کنید
    • اگر هنوز اجازه اجرای اسکریپت‌های محلی را نداده‌اید، بیایید این کار را انجام دهیم: «Set-ExecutionPolicy RemoteSigned».
      • می توانید با استفاده از دستور "Get-ExecutionPolicy" بررسی کنید: به جای "محدود" باید "RemoteSigned" باشد.
    • ما ماژول دانلود شده را با دستور وارد می کنیم: "Import-Module PSWindowsUpdate"
    • آماده. اکنون می توانید از دستورات استفاده کنید:
      • لیست به روز رسانی های موجود را مشاهده کنید: Get-WUInstall -ListOnly
      • همه به‌روزرسانی‌ها را بدون درخواست تأیید نصب کنید: Get-WUIinstall -AcceptAll
      • همه به روز رسانی ها را بدون درخواست تایید نصب کنید و راه اندازی مجدد را به تعویق بیندازید: Get-WUIinstall -AcceptAll -IgnoreReboot
      • به روز رسانی های خاصی را با دانستن تعداد آنها نصب کنید:"Get-WUIinstall -KBArticleID KB3066441, KB3078676 -AcceptAll -IgnoreReboot" - اکنون نیازی نیست به وب سایت مایکروسافت بروید و آنها را به صورت دستی دانلود کنید
      • راهنمایی دقیق در مورد ماژول: get-help Get-WUIinstall -detailed
      • مشاهده لیست به‌روزرسانی‌های موجود به استثنای دسته «بسته‌های زبان»، عناوین «اسکایپ» و به‌روزرسانی KB3012973: Get-WUInstall -NotCategory "Language Packs" -NotTitle Skype -NotKBArticleID KB3012973 -ListOnly
      • نصب به‌روزرسانی‌ها به استثنای دسته «بسته‌های زبان»، سرصفحه‌های «اسکایپ» و به‌روزرسانی KB3012973: Get-WUIinstall -NotCategory «Language Packs» -NotTitle Skype -NotKBArticleID KB3012973 -AcceptAll -Ignoreboot

    سلام. =)
    مقاله منزجر کننده دیگری در مورد مدیریت ویندوز سرور به آماده سازی اولیه سیستم عامل برای استفاده اختصاص داده شده است. از این واقعیت که در نسخه اصلی ویندوز سرور با رابط کاربری گرافیکی (رابط کاربری گرافیکی) و همچنین در Windows Server 2012 Core و بالاتر، Powershell قبلاً نصب شده است، از این واقعیت که در Windows Server 2008R2 Core وجود دارد بسیار متحیر شدم. بویی از آن نیست زیرا تنظیمات خیلی واضح نبود و من مجبور شدم در گوگل و تکنولوژی بگردم، تصمیم گرفتم یادداشت کوتاهی را برای آینده یادداشت کنم.

    بنابراین، ابتدا حداقل PowerShell 2.0 را در اختیار خواهیم داشت (در واقع، می توانید با انجام تمام کارهایی که در زیر در cmd توضیح داده شده است از این مرحله رد شوید، اما من با این شروع کردم). این را می توان به دو روش انجام داد: با اجرای ابزار sconfig.cmd در خط فرمان یا از طریق DISM ( خدمات و مدیریت تصویر استقرار) در همان مکان. اولی یک رابط شبه گرافیکی به ما ارائه می دهد که در آن در قسمت 4 فرصت نصب PS 2.0 را خواهیم یافت.

    این کار از طریق DISM به صورت زیر انجام می شود:
    dism.exe /online /enable-feature:MicrosoftWindowsPowerShell

    پس از نصب PS، راه اندازی مجدد و دریافت ابزار کمی مناسب تر در اختیار ما، سعی می کنیم آن را به نسخه فعلی به روز کنیم. در زمان نوشتن، نسخه 4.0 یا نسخه پیش نمایش 5.0 است. برای من حداقل نسخه قابل استفاده نسخه 3.0 است که قبلاً cmdlet های زیادی برای مدیریت نقش های سرور و منابعی دارد که در نسخه 2 وجود ندارد. Windows PowerShell 3.0 به Net Framework 4.0 یا بالاتر در سیستم نیاز دارد.
    اگر اکنون سعی کنیم .Net 4.0 را نصب کنیم، متوجه می شویم که برای این کار به .Net 2.0 از قبل نصب شده نیاز داریم که به دلایلی در نسخه Server Core وجود ندارد. خنده دار است، اما از روی عادت، با دانلود نصب کننده و راه اندازی آن، ما از نصب امتناع و اخطاری در مورد نیاز به استفاده از dism.exe دریافت خواهیم کرد. >_< OK, dism, так dism. Уставливается по аналогии с PS:
    dism.exe /online /enable-feature:NetFx2-ServerCore
    dism.exe /online /enable-feature:NetFx2-ServerCore-WOW64

    مرحله بعدی به روز رسانی .Net Framework به آخرین نسخه است. اگر می خواهید از Powershell 3.0 استفاده کنید، Net 4.0 را نصب کنید، اما اگر آخرین نسخه را می خواهید، به Net 4.5.1 و بالاتر نیاز دارید. انتخاب با شماست؛ نصب بسیار ساده است. تنها مشکل می تواند در دریافت بسته نصب باشد - من یک درایو شبکه را به سرور وصل کردم که تمام فایل های نصب را روی آن آپلود کردم. شما می توانید از هر وسیله ذخیره سازی مناسب برای خود استفاده کنید.

    بنابراین، ما پایه را برای نصب PS نسخه 3.0 و بالاتر آماده کرده ایم. گام بعدی این است که نصب کننده Windows Management Framework را دانلود و نصب کنید. KB2819745 معماری مورد نیاز خود را دانلود و اجرا کنید:

    به طور سنتی، پس از نصب به راه اندازی مجدد نیاز داریم؛ پس از تکمیل آن، PowerShell 4.0 را در اختیار خواهیم داشت.

    به هر حال، برای اینکه بتوانید از Add-WindowsFeature cmdlet (به Install-WindowsFeature در ویندوز سرور 2012 تغییر نام داد) برای پیکربندی نقش های سرور استفاده کنید، باید اجزای Server Manager را از طریق همان DISM.EXE نصب کنید. به نظر می رسد این است:
    dism.exe /online /enable-feature:ServerManager-PSH-Cmdlet s
    در کل من با آخرین نسخه های PS خیلی اسپویل شدم چون... من بعد از انتشار نسخه سوم کار روی آن را شروع کردم، اما همانطور که مشخص شد، فقط می توانید از dism.exe برای نصب نقش ها استفاده کنید. و اگر نام ویژگی مورد نیاز خود را نمی دانید، همیشه می توانید از طریق پارامتر /get-features به تمام گزینه های موجود و وضعیت آنها نگاه کنید. اما به نظر من Get-WindowsFeature بسیار آموزنده تر است. =)
    dism.exe /online /get-featuresدر مقابل. Get-WindowsFeature