PowerShell 7.1 ممکن است در نگاه اول تغییر بزرگی به نظر نرسد ، اما موارد بسیار بیشتری از آنچه انتظار می رود در زیر کاپوت اتفاق می افتد. همچنین تعدادی از ویژگی ها و ابزارهای بسیار مفید وجود دارد که می توانند اسکریپت های شما را بهبود بخشیده و به شما در ایجاد اسکریپت های بهتر نیز کمک کنند. PowerShell 7.1 در تاریخ 11/11/2020 منتشر شد و به سرعت توسط بسیاری از جامعه IT پذیرفته می شود. این مقاله تعدادی از پیشرفت ها و پیشرفت ها را مورد بحث قرار می دهد ، اما به هیچ وجه مجموعه ای جامع از تمام پیشرفت ها نیست.
تغییرات معماری
بزرگترین پیشرفت مربوط به PowerShell 7.1 است که بر روی NET 5 تازه ساخته شده ساخته شده است. این یک نسخه اصلی است که به سمت وحدت ادامه می یابد. NET با هسته های NET و .NET سنتی روبرو شده است. با NET 5 اولین گام ها برای یک هسته واحد تحقق می یابد. PowerShell 7.1 از بسیاری از بهبودهای عملکرد و زبان بهره مند است.
ماژول های کلیدی به روز شده و پیشرفت های بوت
PowerShell 7.1 شامل چندین به روزرسانی در ماژول های اصلی است. نکته قابل توجه ، PSReadLine 2.1.0 اکنون شامل IntelliSense پیش بینی شده است که مکانیزم پیش بینی نحوی شبیه پوسته ماهی است. علاوه بر این ، تنظیمات زیادی در حالت vi و توانایی اضافه شده در تنظیمات وجود دارد MaximumHistoryCount
از پروفایل کاربری
برای پیشرفت WinCompat
ماژول های در حال بارگذاری ، اکنون ماژول های PowerShell 7 با اولویت بیشتری رفتار می شوند. این مانع از رونویسی تصادفی ماژول های اصلی هنگام استفاده می شود WinCompat
حالت برای فعال کردن ماژول های PowerShell 7 بومی در نسخه به روز شده PowerShell.
ویژگی های جدید موتور
البته چند ویژگی اساسی جدید نیز وجود دارد که مفید هستند. سه مورد اصلی عبارتند از:
PSNullConditionalOperators
PSUnixStat
- پشتیبانی از TLS 1.3
عملگرهای صفر شرطی در واقع در PowerShell 7 معرفی شدند ، اما به عنوان یک ویژگی آزمایشی. این ویژگی اکنون به صورت پیش فرض است و به صورت پیش فرض در PowerShell 7.1 فعال است. دو اپراتور جدید وجود دارد ??
و ??=
.
# This typically replaces an if null statement and will run the output if the value is null.
$Object ?? '$object contains a $null value'
# When the value of the conditional is null then, assign that object to the value on the right of the conditional.
$Object ??= 'This value is assigned on a $null $object'
پس ما داریم PSUnixStat
گزینه ، این پرونده بیان می کند که قبلاً از حالت آزمایشی منتقل شده است ، اما گاهی اوقات ممکن است همچنان آزمایشی به نظر برسد. این ویژگی فقط برای سیستم های لینوکس در دسترس خواهد بود. با انجام موارد زیر می توانید از وضعیت آن مطلع شده و عملکرد را روشن کنید.
# Make sure this feature is enabled, will need to restart the PowerShell session
Get-ExperimentalFeature -Name 'PSUnixFileStat' | Enable-ExperimentalFeature
این ویژگی ویژگی جدیدی به شما می دهد UnixMode
خاصیتی که اطلاعات یونیکس را نمایش می دهد stat
تیم این برای کسانی که عادت به کار با مجوزهای سنتی لینوکس دارند بسیار مفید است.
سرانجام ، پشتیبانی از TLS 1.3 اکنون در دستورات مختلف وب مانند موارد دیگر موجود است Invoke-RestMethod
و Invoke-WebRequest
. برای کسانی که می خواهند از عملکرد و پیشرفت های امنیتی که در این نسخه جدید TLS موجود است و می توانند با یک نقطه پایانی که قادر به انجام این کار است تعامل داشته باشند ، استفاده کنند ، این یک افزودنی بسیار مفید خواهد بود. اگر سایت از TLS 1.3 پشتیبانی کند ، محتوا بازگردانده می شود و توسط نسخه جدید پروتکل توافق می شود.
Invoke-RestMethod -Uri '<https://mysite.com>' -SslProtocol Tls13
پیشرفت های بیشتر
چندین ویژگی و پیشرفت اضافی وجود دارد که به بهبود قابلیت ها و ساختار اسکریپت شما کمک می کند.
- در وسط ویندوز ،
Start-Process
اکنون به طور پیش فرض شامل تمام متغیرهای محیط از جلسه فعلی است. فقط هنگام استفادهUseNewEnvironment
پارامتر با متغیرهای فرآیند جدید ایجاد می شود. -
ForEach-Object -Parallel
دستور از فضاهای اجرا استفاده مجدد می کند. این کار باعث بهبود استفاده و عملکرد حافظه می شود. برای کسانی که علاقه مند نیستند حداکثر عایق کاری در فضای کار حاصل نشود ، این پارامتر استUseNewRunspace
قبلاً برای ایجاد یک فضای کاری کاملاً جدید برای هر تکرار خط لوله در نظر گرفته شده است. -
Get-Random
این فرمان از قبل شامل می شودShuffle
پارامتر. این یک مجموعه را می گیردGet-Random
یا از طریقInputObject
و همان مجموعه را برگردانید ، اما به ترتیب تغییر مکان داد. - پارامتر را اضافه کنید
AsUTC
بهGet-Date
تیم این نرم افزارهای تبدیل سنتی را ساده می کند ، مانند[DateTime]
هدف – شی. - کاربرد
Stop-Computer
cmdlet برای سیستم های لینوکس و macOS. این به باینری متکی است/sbin/shutdown
در دسترس. اگر سیستم عامل لینوکس باشد ، این استدلال منتقل می شودnow
و اگر سیستم عامل macOS باشد ، بحث این است-P now
. - شبیه به
Stop-Computer
،Restart-Computer
اکنون در سیستم های Linux و macOS اعمال می شود. این از باینری استفاده می کند/sbin/shutdown
و بحث را به-r now
.
تغییرات نگران کننده
سرانجام ، تعداد انگشت شماری از تغییرات مهم وجود دارد. موارد بیشتری در این لیست وجود دارد ، اما این دو مورد بیشتر از دیگران می توانند روی اسکریپت ها تأثیر بگذارند.
- تغییر نام
FromUnixTime
بهUnixTimeSeconds
برGet-Date
cmdlet برای اجازه دادن به زمان ورودی یونیکس ممکن است روی اسکریپت هایی که از این ویژگی استفاده می کنند تأثیر بگذارد و باید به روز شود. - نتیجه برگشت داده را به داخل نپیچید
PSObject
هنگام تبدیل ScriptBlock به نوع تفویض اختیار. این یک مورد شدید است که یک بلوک اسکریپت پرتاب می شود و شما می خواهید نوع بازگشتی همان شی object اصلی باشد و به PSObject منتقل نشود.
نتیجه
PowerShell 7.1 به نظر نمی رسد که ویژگی های جدید بسیار بزرگی را ارائه کرده باشد ، اما بسیاری از پیشرفت های اضافی و پیشرفت های عمده در زمینه باطن وجود دارد. زبان اکوسیستم و PowerShell با هر تکرار همچنان بهبود می یابد و به سرعت در حال تبدیل شدن به یک زبان محبوب و اصلی برای مدیران سیستم در همه جا است.
منبع: khabar-mehman.ir