পাওয়ারশেল ইউনিক্স শেলগুলির মতো পর্যাপ্তরকম similar ইউনিক্সে ls, rm, cp, mv ইত্যাদির মতো আপনি যে কমান্ড ব্যবহার করেন তা পাওয়ারশেলের কাছে উপকরণ রয়েছে তবে যাইহোক, এলিয়াসগুলির পিছনের সেমিডলেটগুলি যেভাবে কাজ করে তা বেশ আলাদা।
* নিক্স শেল-এ, সমস্ত কিছু পাঠ্য ভিত্তিক হয়, সুতরাং এক কমান্ড থেকে আউটপুট অন্যকে পাইপ করা যায় তবে প্রাপ্তি প্রোগ্রামটি অবশ্যই পাইপলাইন থেকে পাঠটিকে পার্স / ব্যাখ্যা করতে হবে তা অবশ্যই জানতে হবে। পাওয়ারশেল এবং * নিক্স শেলের মধ্যে এটিই মূল পার্থক্য ... পাওয়ারশেলের মধ্যে, যা কিছু ঘটে যায় তা একটি বস্তু।
এর পরিণতি হ'ল এক কমান্ড থেকে অন্য কমান্ডে পাইপিং করা কেবল স্টিডনকে স্টিডিনে পাইপিং নয়। এটি রিসিভারের জন্য একটি পূর্ণাঙ্গ। নেট বস্তুর পাইপ দিচ্ছে। সুতরাং, প্রাপককে কেবল কীভাবে সেই ধরণের কোনও বিষয় পরিচালনা করতে হবে তা জানতে হবে। এটি পাঠ্যের কোনও বিশ্লেষণ কার্যকর করার দরকার নেই, তবে কীভাবে ইনপুট অবজেক্টের পদ্ধতি এবং বৈশিষ্ট্য (সদস্য) কল করতে হবে তা বোঝার দরকার রয়েছে।
* নিক্স কমান্ড লাইন প্রোগ্রামে, আপনি কোড লিখবেন যা স্টিডিন থেকে পড়ে এবং অন্য কোনও প্রোগ্রাম উত্পন্ন প্রোগ্রাম থেকে তার তথ্যটিকে বিশ্লেষণ করে। পাওয়ারশেলে আপনি এমন কিছু করবেন:
function changeName($myObject)
{
if ($myObject.GetType() -eq [MyType])
{
#print the current name to screen
$myObject.Name
#change string in the 'name' property
$myObject.Name = "NewName"
}
return $myObject
}
কমান্ড লাইনে এই কোডটি কল করার মতো হতে পারে:
PS> $myObject = New-Object MyType -arg "OriginalName"
PS> $myObject = changeName $myNewObject
OriginalName
PS> $myObject.Name
NewName
আপনি পাইপিং প্রক্রিয়াটি ব্যবহার করে উপরের মতোটিও করতে পারেন তবে আপনি এখানে মূল পার্থক্যটি দেখতে পাচ্ছেন যে আমরা কোনও বস্তুটি পাস করছি এবং পাঠ্যটি নয়:
PS> $myObject = New-Object MyType -arg "OriginalName" | changeName
OriginalName
PS> $myObject.Name
NewName
এই প্রধান পার্থক্যের কথা ভুলে গিয়ে আমি বলব অন্যান্য অতিপরিচয়তা মিল রয়েছে তবে বেশিরভাগই কেবল সিন্টেক্সিকভাবে। পাওয়ারশেল সিনট্যাক্সটি * নিক্স শেল ব্যবহারকারীদের মনে রেখে ডিজাইন করা হয়েছে বলে মনে হয়, তাই অনেক ভাষার স্টাইলই একই রকম।