নিম্নলিখিত পাওয়ারশেল লিপিটি বিবেচনা করুন, যা সিতে ফোল্ডারগুলি অনুসন্ধান করে: \ তাদের নামে একটি 'ওগ' সহ:
PS সি: \> (ls |% {$ _। নাম} |? {$ _। এতে রয়েছে ("ওগ")}) PerfLogs প্রোগ্রাম ফাইল setup.log
কেবলমাত্র একটি আইটেম পাওয়ার জন্য আমি অনুসন্ধানটি সঙ্কুচিত করে রেখেছি:
PS C: \> (ls |% {$ _। নাম} |? {$ _। এতে রয়েছে ("প্রোগ্রাম")}) প্রোগ্রাম ফাইল
আশ্চর্যের বিষয়টি হ'ল প্রথম অপারেশনটি একটি অ্যারে দেয় , যখন দ্বিতীয় অপারেশন (যা আইএমএইচও অর্থাত্ একই ক্রিয়াকলাপ, তাই এটি একই ধরণের ফলাফল পাওয়া উচিত) একটি স্ট্রিং দেয় । এটি নিম্নলিখিত ফলাফলটিতে দেখা যায়:
PS C: \> (ls |% {$ _। নাম} |? {$ _। এতে রয়েছে ("ওগ")})। দৈর্ঘ্য 3 পিএস সি: \> (ls |% {$ _। নাম} |? {$ _। এতে রয়েছে ("প্রোগ্রাম")}) দৈর্ঘ্য। 13
এটি খুব বিরক্তিকর হতে পারে, যেহেতু দৃশ্যত এমন কিছু ফোল্ডার রয়েছে যা 'প্রোগ্রাম' এর সাথে মেলে তাদের চেয়ে 'ওগ' মেলে।
স্পষ্টতই, পাওয়ারশেল স্পষ্টতই একটি একক বস্তুর কাছে একটি একক আইটেম অ্যারে আনবক্স করে 'এবং আমরা কখনই দৈর্ঘ্যের একটি অ্যারে পাই না বলে মনে হয় প্রতিবার পাইপলাইনের উপর দিয়ে আসা ফলাফলগুলি গণনা করতে চাইলে, আমাকে পরীক্ষা করে দেখতে হবে কিনা' আমি একটি অ্যারের সঙ্গে ডিল বা না।
কীভাবে আমি এটি হতে রোধ করতে পারি? এটার সাথে তুমি কিভাবে চুক্তি করলে?
$_.Contains
, তারপর%{,,$_.Name}
কাজ করে ...