আমি মনে করি স্পষ্টতার জন্য এখানে পছন্দগুলি পুনরায় সংশোধন / সংক্ষিপ্ত করা সার্থক ... তবে আমি একটি নতুন পরিবর্তনের প্রস্তাব দেব যা আমি বিশ্বাস করি যে সর্বোত্তম উপযোগিতা সরবরাহ করে।
<1> রিডকি (সিস্টেম.কনসোল)
write-host "Press any key to continue..."
[void][System.Console]::ReadKey($true)
- সুবিধা: যে কোনও কী গ্রহণ করে তবে শিফট, আল্ট, সিটিআরএল সংশোধক কীগুলি যথাযথভাবে বাদ দেয়।
- অসুবিধা: পিএস-আইএসই তে কাজ করে না।
<2> রিডকি (RawUI)
Write-Host "Press any key to continue ..."
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
- অসুবিধা: পিএস-আইএসই তে কাজ করে না।
- অসুবিধা: পরিবর্তনকারী কীগুলি বাদ দেয় না।
<3> সেমি
cmd /c Pause | Out-Null
- অসুবিধা: পিএস-আইএসই তে কাজ করে না।
- অসুবিধা: প্রথম ব্যবহারে দৃশ্যমানভাবে নতুন শেল / উইন্ডো চালু হয়; পরবর্তী ব্যবহারে লক্ষণীয় নয় তবে এর ওভারহেড রয়েছে
<4> পঠন-হোস্ট
Read-Host -Prompt "Press Enter to continue"
- সুবিধা: পিএস-আইএসইতে কাজ করে।
- অসুবিধা: কেবল প্রবেশের কীটি গ্রহণ করে।
<5> রিডকি সংমিশ্রণ
এটি অ্যাডাম টেক ব্লগের প্রস্তাব থেকে প্রাপ্ত আইএসই ওয়ার্কারআউন্ড / ক্লডজ (এই পৃষ্ঠায় আগের মন্তব্যে নিক এর সৌজন্যে) এর সাথে <1> এর একটি সংমিশ্রণ । আমি দ্বিতীয়টির ক্ষেত্রে দুটি হালকা উন্নতি করেছি: যদি আপনি সেট-স্ট্রাইকডমড ব্যবহার করেন তবে কোনও ত্রুটি এড়াতে টেস্ট-পাথ যুক্ত করা হয়েছে (আপনি কি করেন না ?!) এবং আপনার কী-স্ট্রোকের পরে একটি নতুন লাইন যুক্ত করার জন্য চূড়ান্ত লিখিত-হোস্ট রাখুন সঠিক জায়গায় প্রম্পট।
Function Pause ($Message = "Press any key to continue . . . ") {
if ((Test-Path variable:psISE) -and $psISE) {
$Shell = New-Object -ComObject "WScript.Shell"
$Button = $Shell.Popup("Click OK to continue.", 0, "Script Paused", 0)
}
else {
Write-Host -NoNewline $Message
[void][System.Console]::ReadKey($true)
Write-Host
}
}
- সুবিধা: যে কোনও কী গ্রহণ করে তবে শিফট, আল্ট, সিটিআরএল সংশোধক কীগুলি যথাযথভাবে বাদ দেয়।
- সুবিধা: পিএস-আইএসইতে কাজ করে (যদিও কেবল এন্টার বা মাউস ক্লিক সহ)
- অসুবিধা: ওয়ান-লাইনার নয়!