রাইট-হোস্ট এবং লিখন-আউটপুট মধ্যে পাওয়ারশেল পার্থক্য?


উত্তর:


82

সংক্ষেপে, Write-Hostনিজেই কনসোলে লিখুন। একটি MsgBox হিসাবে মনে করে VB স্ক্রিপ্টWrite-Outputঅন্যদিকে, পাইপলাইনে লিখেছে, যাতে পরবর্তী কমান্ড এটিকে তার ইনপুট হিসাবে গ্রহণ করতে পারে। আপনি ব্যবহার করতে প্রয়োজন হয় না Write-Outputলেখার বস্তু অনুক্রমে, যেমন Write-Outputপরোক্ষভাবে আপনার জন্য বলা হয়।

PS> Get-Service

যেমন হবে:

PS> Get-Service | Write-Output

16
পাওয়ারশেল এইভাবে এতটাই বিভ্রান্তিকর। পাওয়ারশেলে উল্লিখিত পাইপলাইনের অনুভূতি পেতে এবং কীভাবে কোনও ফাংশন থেকে মানগুলি ফিরে আসে সে সম্পর্কে এই লিঙ্কটি পড়া ভাল to "পাওয়ারশেলের রিটার্ন কীওয়ার্ডটি বিভ্রান্তিমূলক - সত্য, আমি এড়াতে পারি, কারণ এটি বেশিরভাগ প্রোগ্রামিং ভাষার মতো কাজ করে না।" - পাওয়ারশেল.org
জিম আহো

4
যদি আপনি এমন কোনও ফাংশনকে কল করছেন যার রিটার্ন মান রয়েছে, তবে সেই ফাংশনে লিখন-আউটপুট ব্যবহার করবেন না বা সেই স্ট্রিংটি আপনার রিটার্ন মানের পরিবর্তে ফিরে আসবে। যা সর্বপ্রকার ধ্বংসযজ্ঞের কারণ হতে পারে।
Brain2000

28

লিখন-আউটপুট পাইপলাইনে আউটপুট প্রেরণ করে। সেখান থেকে এটি অন্য সেমিডলেটে পাইপ করা যায় বা ভেরিয়েবলের জন্য বরাদ্দ করা যেতে পারে। লিখন-হোস্ট এটি সরাসরি কনসোলে প্রেরণ করে।

$a = 'Testing Write-OutPut'  | Write-Output
$b = 'Testing Write-Host' | Write-Host

Get-Variable a,b

ফলাফল:

Testing Write-Host

Name                           Value                                                                 
----                           -----                                                                 
a                              Testing Write-OutPut                                                  
b                                                  

আপনি যদি পাওয়ারশেলকে পাইপলাইনটিতে কোনও ভেরিয়েবলের জন্য নির্ধারিত করে বা এটি anoher কমান্ডে পাইপ দিয়ে আউটপুট নিয়ে কী করতে চান না, তবে এটি আউট-ডিফল্টে প্রেরণ হয়ে যায় যা সাধারণত কনসোল হয় তাই শেষ ফলাফলটি একই দেখা যায় ।


9

Write-Outputপাইপলাইনের মাধ্যমে একটি অবজেক্ট হিসাবে ডেটা প্রেরণ করে। প্রশ্নের উদাহরণে এটি কেবল একটি স্ট্রিং পাস করবে।

write-hostহোস্ট নির্ভর কনসোলটি write-hostমূলত করছে [console]::WriteLine। দেখুন এই আরও তথ্যের জন্য।


4
কেবল ভবিষ্যতের পাঠকদের জন্য স্পষ্ট করার জন্য। Write-Ouputবস্তু প্রেরণ করে এবার এটি একটি স্ট্রিং ছিল, তবে সাধারণভাবে এটি অবজেক্টগুলি প্রেরণ করবে, এবং এটি আউটপুট ফলাফল / ডেটা-র ডিফল্ট উপায় হওয়ায় এটি ব্যবহার করা সাধারণত অপ্রয়োজনীয় :)
ফ্রয়েড এফ।

5

লিখন-হোস্ট এবং লিখন-আউটপুট মধ্যে অন্য পার্থক্য:

  • লিখন-হোস্ট স্ক্রিনে বার্তাটি প্রদর্শন করে, তবে এটি লগে এটি লেখেন না

  • লিখন-আউটপুট লগটিতে একটি বার্তা লিখেছে, তবে এটি স্ক্রিনে প্রদর্শন করে না।

এবং লিখন-হোস্টকে ক্ষতিকারক হিসাবে বিবেচনা করা হয়। আপনি লিখিত-হোস্ট বিবেচিত ক্ষতিকারক একটি বিশদ ব্যাখ্যা দেখতে পাবেন ।


4
আমি লিখন-আউটপুটকে আরও ক্ষতিকারক বলে মনে করি। কোনও কমান্ড থেকে কোনও অপ্রত্যাশিত আবর্জনা না পেয়ে কোনও ফাংশন আসলে আপনার প্রত্যাশিত ফলাফলটি কীভাবে প্রত্যাশা করে তা আপনি কীভাবে নিশ্চিত করছেন?
এমকেস্পার

6
আমার মনে হয় Write-Outputআপনি যদি স্ক্রিপ্টটি নিজে চালাচ্ছেন তবে স্ক্রিনে বার্তাটি প্রদর্শন করে। সুতরাং "লিখন-আউটপুট লগটিতে একটি বার্তা লেখার সাথে আপনি কী অর্থ নিচ্ছেন তা আমি নিশ্চিত নই, তবে এটি স্ক্রিনে প্রদর্শন করে না।" ?
জিম আহো

আপনি স্ক্রিনে লিখন-আউটপুট রিটার্নের তথ্য রাখতে পারবেন না যদি এটি কোনও ফাংশনের ভিতরে ব্যবহার করা হয় যা থেকে আপনি আউটপুটটিকে একটি চলকতে ক্যাপচার করেন। এটি এমনকি আউটপুট নষ্ট হতে পারে। লিখন-হোস্ট এর জন্য আরও উপযুক্ত।
গ্যালামোক

@ সুমার লিখন-আউটপুট ক্ষতিকারক, লেখার তথ্য দুর্দান্ত is রাইট-আউটপুট হল পাওয়ারশেল ফাংশনগুলির শত্রু যা ফেরতের মান রয়েছে have
Brain2000

দস্তাবেজ অনুসারে , "উইন্ডোজ পাওয়ারশেল ৫.০ থেকে শুরু করে, রাইটিং-হোস্ট হ'ল লিখন-তথ্যের একটি মোড়ক এটি আপনাকে তথ্য প্রবাহে আউটপুট নির্গত করতে রাইট-হোস্ট ব্যবহার করতে দেয়।"
Phistrom

0

আপনি নীচের উদাহরণ সহ দুটি সেমিডিএসের মধ্যে পার্থক্য বুঝতে পারবেন:

লিখুন-হোস্ট "msgtxt" | গেট-সার্ভিস উপরের চলমান চলাকালীন, আপনি "msgtxt" হিসাবে আউটপুট পাবেন

লিখন-আউটপুট "msgtxt" | গেট-সার্ভিস উপরের চলতে চলতে, আপনি একটি ত্রুটি পাবেন যেহেতু msgtxt কোনও পরিষেবার নাম নয় (

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.