পাওয়ারশেল যখন একটি কমান্ডটি একটি স্ট্রিং দিয়ে শুরু করে দেখেন কেবল স্ট্রিংটির মূল্যায়ন করে, এটি সাধারণত এটি স্ক্রিনে প্রতিধ্বনিত হয়, উদাহরণস্বরূপ:
PS> "Hello World"
Hello World
আপনি যদি পাওয়ারশেলকে কমান্ডের নাম হিসাবে স্ট্রিংটির ব্যাখ্যা করতে চান তবে কল অপারেটর (&) এর মতো ব্যবহার করুন:
PS> & 'C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe'
এর পরে আপনার সম্ভবত কেবলমাত্র প্যারামিটার / আর্গুমেন্ট জোড়াটি উদ্ধৃত করা দরকার যেখানে স্পেস এবং / অথবা উদ্ধৃতি অক্ষর রয়েছে। আপনি যখন জটিল কমান্ড লাইন আর্গুমেন্টের সাথে এই জাতীয় কোনও EXE ফাইলটি প্রার্থনা করেন তখন একটি সরঞ্জাম পাওয়া সাধারণত খুব সহায়ক হয় যা আপনাকে দেখায় যে কীভাবে পাওয়ারশেল EXE ফাইলটিতে আর্গুমেন্ট প্রেরণ করে। PowerShell কমিউনিটি এক্সটেনশানগুলি যেমন একটি হাতিয়ার হয়েছে। একে ইকোর্গস বলা হয়। আপনি কেবলমাত্র এক্সই ফাইলটি প্রতিধ্বনির সাহায্যে প্রতিস্থাপন করেছেন - সমস্ত আর্গুমেন্ট রেখেছেন এবং এটি আপনাকে প্রদর্শন করবে যে EXE ফাইলটি কীভাবে আর্গুমেন্ট গ্রহণ করবে, উদাহরণস্বরূপ:
PS> echoargs -verb:sync -source:dbfullsql="Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;" -dest:dbfullsql="Data Source=.\mydestsource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;",computername=10.10.10.10,username=administrator,password=adminpass
Arg 0 is <-verb:sync>
Arg 1 is <-source:dbfullsql=Data>
Arg 2 is <Source=mysource;Integrated>
Arg 3 is <Security=false;User>
Arg 4 is <ID=sa;Pwd=sapass!;Database=mydb;>
Arg 5 is <-dest:dbfullsql=Data>
Arg 6 is <Source=.\mydestsource;Integrated>
Arg 7 is <Security=false;User>
Arg 8 is <ID=sa;Pwd=sapass!;Database=mydb; computername=10.10.10.10 username=administrator password=adminpass>
ইকোয়ার্গস ব্যবহার করে আপনি এটি সঠিক না হওয়া পর্যন্ত আপনি পরীক্ষা করতে পারবেন, উদাহরণস্বরূপ:
PS> echoargs -verb:sync "-source:dbfullsql=Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;"
Arg 0 is <-verb:sync>
Arg 1 is <-source:dbfullsql=Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;>
দেখা যাচ্ছে সংযোগের স্ট্রিংয়ের চারপাশে ডাবল উদ্ধৃতি বজায় রাখার আগে আমি খুব চেষ্টা করে যাচ্ছিলাম। স্পষ্টতই এটি প্রয়োজনীয় নয় কারণ এমনকি cmd.exe এগুলি ছিনিয়ে নেবে।
বিটিডাব্লু, টুপিটি পাওয়ারশেল টিমের কাছে। পছন্দসই ফলাফলটি পেতে তারা আমাকে একক ও ডাবল উদ্ধৃতিগুলির সুনির্দিষ্ট উত্থাপন প্রদর্শন করতে যথেষ্ট সহায়ক ছিল - যদি আপনার অভ্যন্তরীণ ডাবল উদ্ধৃতিগুলি স্থানে রাখার প্রয়োজন হয়। :-) তারা এও বুঝতে পারে যে এটি ব্যথার ক্ষেত্র, তবে তারা কোনও নির্দিষ্ট সমস্যা দ্বারা প্রভাবিত লোকদের সংখ্যা দ্বারা চালিত। যদি এটি আপনার পক্ষে ব্যথার ক্ষেত্র, তবে দয়া করে এই পাওয়ারশেল বাগ জমা দেওয়ার পক্ষে ভোট দিন ।
পাওয়ারশেল কীভাবে পার্স করে সে সম্পর্কে আরও তথ্যের জন্য, আমার কার্যকর পাওয়ারশেল ব্লগ সিরিজটি দেখুন - বিশেষত আইটেম 10 - "পাওয়ারশেল পার্সিং মোডগুলি বোঝা"
আপডেট 4/4/2012: পাওয়ারশেল ভি 3 এ পরিচালনা করা এই পরিস্থিতিটি অনেক সহজ হয়ে যায়। বিস্তারিত জানার জন্য এই ব্লগ পোস্ট দেখুন ।