نصوص PowerShell التفاعلية باستخدام Read-Host: دليل كامل

باستخدام أمر PowerShell cmdlet Read-Host، يمكنك طلب الإدخال تفاعليًا من مستخدم النص. دعنا نرى بعض التطبيقات العملية في العالم الحقيقي على كيفية استخدام أمر الـRead-Host في PowerShell.

طلب الإدخال باستخدام Read-Host

يؤدي أمر Read-Host وظيفتين في نص PowerShell؛ إنه يعلق التنفيذ ويستقبل الإدخال. هذا كل شيء. Read-Host هو أمر بسيط ولكنه يأتي بفائدة عند الحاجة إلى الحصول على معلومات من مستخدم النص.

في أبسط حالاته، يتطلب أمر Read-Host ببساطة استخدام المعلمة Prompt. تسمح هذه المعلمة Prompt لك بإعطاء مستخدم النص بعض الإشارات حول ما يجب إدخاله. على سبيل المثال، إذا كان النص الخاص بك يتطلب اسم خادم، قد تختار استخدام Read-Host لطلب من المستخدم إدخال ذلك عند تشغيل النص.

يمكنك أن ترى أدناه أنه من خلال تنفيذ Read-Host داخل نافذة الأوامر PowerShell نفسها باستخدام المعلمة Prompt، فإن PowerShell يتوقف عن التنفيذ ويعرض رسالة الإعلام الخاصة بي التي توضح للمستخدم ما نبحث عنه.

Read-Host PowerShell prompt

دعونا ندمج هذا في نص. كلما قام مستخدم بإدخال معلومات في النافذة، يقوم Read-Host بإرجاع تلك المعلومات إلى الشفرة الخاصة بك. يمكنك بسهولة التقاط هذه المعلومات عن طريق تعيين الإخراج إلى متغير. ربما أرغب في طلب اسم الخادم ثم القيام بشيء مع ذلك الاسم. وإلا، أود أن أرسل تحذيرًا للمستخدم يخبرهم بأنني بحاجة حقًا، بحقًا إلى ذلك الاسم.

$serverName = Read-Host -Prompt 'Server name to process'
if ($serverName) {
    Write-Host "We can now use the server name [$serverName] in our code"
} else {
    Write-Warning -Message "No server name input."
}

باستخدام هيكل if/then بسيط، يمكنني أن أتأكد من أن المستخدم يدخل اسم خادم. بمجرد أن يفعلوا ذلك، يمكنني بعد ذلك التقاطه والقيام بشيء معه ، وإلا، أرسل رسالة تحذير.

Warning when no input

طلب كلمات المرور

يجب أن تعرف أنه ليس من الفكرة الجيدة تخزين كلمات المرور على نص عادي في السكربتات الخاصة بك. وبالمثل، ليس من الفكرة الجيدة أيضًا أن تكون كلمات المرور مخزنة على شكل نص عادي في الذاكرة. للتغلب على ذلك، تحتوي PowerShell على مفهوم يُسمى “سلسلة آمنة” وهي سلسلة بسيطة مشفرة.

A secure string can any kind of sensitive information; a password is a great example. What does this have to do with Read-Host? The Read-Host cmdlet has an AsSecureString parameter which allows the user to not only store the output as a secure string but also to show asterisk while typing to hide your secret from prying eyes!

لنفترض أن لدي سرًا عميقًا ومظلمًا لا أريد لأحد أن يعرف عنه ولكني بحاجة لتمرير كلمة المرور هذه إلى نوع من البرمجيات. يمكنك أن ترى أدناه أنه عندما لا أستخدم AsSecureString، أنت على دراية بذلك! ومع ذلك، إذا استخدمت AsSecureString، سري آمن لأن كل حرف أكتبه يتم استبداله بفاصلة ويتم حفظ الإخراج كسلسلة آمنة بدلاً من سلسلة نصية عادية.

Accepting secure input with Read-Host

للإطلاع على توثيق Read-Host، تفضل بزيارة Microsoft Docs.

Source:
https://adamtheautomator.com/read-host/