পাওয়ারশেলে কনসোলে লেখার সর্বোত্তম উপায়


142

কনসোলে মুদ্রণের বিভিন্ন উপায় (প্রতিধ্বনি) সম্পর্কে আমার কিছুটা বিভ্রান্তি হচ্ছে। আমি দেখেছি কনসোলে আউটপুট লেখার একাধিক উপায় রয়েছে, যেমন:

Write-Host "Hello world1"
"Hello World2"
Out-Host -InputObject "Hello World3"

তিনটি উপায় কনসোলে মুদ্রণ করবে। মাঝেরটি হ'ল একরকম সহজ এবং কম ভার্বোস এবং সহজেই ব্যবহারযোগ্য। আমি এটিও দেখতে পাই যে আপনি যখন কোনও ফাংশন লিখেন যেমন:

function GetValues()
{
    "1"
    "2"
}

এটি এখনও পাইপলাইনে দুটি স্ট্রিং প্রদান করে:

এবং আমি এখনও মান মুদ্রণ করতে সক্ষম:

foreach ($s in GetValues)
{
    Write-Host "s: " $s
}

আমি যে জিনিসটি পেয়েছি তা হ'ল কেবল উদ্ধৃত স্ট্রিংটি ব্যবহার করা সর্বদা কাস্টম হোস্টগুলিতে উপস্থিত হয় না এবং কাস্টম হোস্টগুলিতে মুদ্রণের জন্য মান লেখার জন্য আমাকে লিখিত-হোস্ট ব্যবহার করতে হয়েছিল।

একরকম আমি এই বিভ্রান্তি খুঁজে। এর "Print something"কোনও উপনাম হওয়ার কথা Write-Hostবা উদ্দেশ্য কী?

উত্তর:


101

পাওয়ারশেলের ডিফল্ট আচরণ হ'ল কেবল পাইপলাইন থেকে পড়ে থাকা সমস্ত কিছু ফেলে দেওয়া যা অন্য পাইপলাইন উপাদান দ্বারা বাছাই করা বা কোনও ভেরিয়েবলের (বা পুনঃনির্দেশিত) এ নিযুক্ত না করে Out-Host। যা Out-Hostকরে তা অবশ্যই হোস্ট-নির্ভর।

কেবল পাইপলাইন থেকে জিনিসগুলি পড়তে দেওয়া কোনও বিকল্প নয়Write-Host যা হোস্ট অ্যাপ্লিকেশনটিতে পাঠ্য আউটপুট করার একমাত্র কারণে বিদ্যমান।

আপনি যদি আউটপুট চান, তবে Write-*সেমিডলেট ব্যবহার করুন । যদি আপনি কোনও ফাংশন থেকে ফেরতের মান চান, তবে কেবলমাত্র কোনও সেমিডলেট ছাড়াই সেখানে বস্তুগুলি ফেলে দিন।


1
আমি .vbs স্ক্রিপ্ট এ টাইপ করেছি। কেবল কোডের লাইনটি এবং এটি আমার ত্রুটি ছুঁড়েছে।
ফ্রেনকিবি

58

মাঝেরটি পাইপলাইনে লেখেন। Write-Hostএবং Out-Hostকনসোলে লেখেন। 'প্রতিধ্বনি' একটি উপনাম Write-Outputযার জন্য পাইপলাইনেও লেখেন। Write-Hostকনসোলটিতে লেখার সর্বোত্তম উপায় হ'ল সেমিডলেট ব্যবহার করা ।

পাইপলাইনে যখন কোনও বস্তু লেখা হয় তখন এটি শৃঙ্খলে থাকা অন্যান্য কমান্ড দ্বারা গ্রাস করা যায়। উদাহরণ স্বরূপ:

"hello world" | Do-Something

Write-Hostপাইপলাইনে নয় কনসোলকে লেখার পরে এটি কাজ করবে না (ডু-সামথিংয়ের স্ট্রিংটি পাবেন না):

Write-Host "hello world" | Do-Something

3
এই উত্তরটি প্রযুক্তিগতভাবে সঠিক, তবে আমার সন্দেহ হয় যে এটি একটি নিওফাইট পাওয়ারশেল ব্যবহারকারীকে বিপথগামী করে। কার্যকর পাওয়ারশেলের প্রথম নিয়ম হ'ল পাইপলাইনে দরকারী আউটপুট উত্পাদন করা। আপনি যদি লিখন-হোস্টটি খুব বেশি ব্যবহার করে থাকেন তবে আপনি সম্ভবত এটি ভুল করছেন।
ल्डফার্ট

6
ঠিক আছে, ওপি যা বলেছিল তা নয়, কনসোলে কীভাবে লিখব? হোস্টকে লেখার এবং পাইপলাইনে লেখার মধ্যে পার্থক্য রয়েছে এবং প্রতিটি কী করে তা জানতে হবে। আমি একটি ব্যাখ্যা দিয়ে আমার উত্তর আপডেট করব
শ্যা লেভি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.