পাওয়ারশেল স্ক্রিপ্ট, কমান্ডগুলি চালিত দেখাচ্ছে


37

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

উত্তর:


45

নিম্নলিখিত কমান্ডটি স্ক্রিপ্টের প্রতিটি লাইন লিখুন-ডিবাগ-

Set-PSDebug -Trace 1

থেকে man Set-PSDebug

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


যদি আপনি এটি কোনও স্ক্রিপ্টে যোগ করেন যা ব্যবহার করে তবে Paramএই লাইনটি পরম-সংজ্ঞায়িত ব্লকের নীচে রাখার বিষয়টি নিশ্চিত করুন বা এটি ব্যর্থতার কারণ হতে পারে।
kayleeFrye_onDeck

4

আমি কোথায় ব্যবহৃত echo onসিএমডি, আমার এখন ব্যবহার Write-Verboseএবং Set-PSDebug -Stepপরিবর্তে। এগুলি এক নয় তবে দক্ষতার সাথে চালিত হলে তারা আরও শক্তিশালী।


2

কুশ্রী:

PS > get-content foo.ps1|foreach-object{$_;invoke-expression "$_"}
$procs=get-process powershell
foreach($proc in $procs){$proc.processname}
powershell
PS > get-content foo.ps1
$procs=get-process powershell
foreach($proc in $procs){$proc.processname}
PS >

উপরের সমস্যাটি হ'ল যদি আপনার কাছে মাল্টি-লাইন কমান্ড থাকে:

foreach($proc in $procs){
  $proc.processname
}

উপরের আমার উদাহরণটির সাথে ব্যর্থ হবে যদি সেটির সাথে foo.ps1 এ স্থাপন করা হয় ...


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

2
help about_History 

সমস্ত আদেশ এবং সম্পর্কে আপনাকে জানাতে হবে

Get-History [options]  

আপনার প্রদর্শন man প্রদর্শন ইত্যাদির জন্য পুরো তালিকাটি ফিরিয়ে দেবে etc.


2
আমি "সেট-এসডিবেগ -ট্রেস 1" পেয়েছি যা কমান্ডগুলি দেখায়, তবে অনেক বেশি "শোরগোল" চাই না। গিটার-ইতিহাস কোনও স্ক্রিপ্টে কিছুই আউটপুট দেয় না। যদি এটি হয় তবে আমি এটি কোনও স্ক্রিপ্টের শেষে আটকে রাখতে পারতাম, তবে তারপরে কমান্ডগুলি অন-লাইন হবে না (কমান্ড আউটপুটের আগে) এবং কোনও ব্যতিক্রম এটি এড়িয়ে যাবে (যদি না আমি এটি অবশ্যই ধরি)। এটি এখনও মনে রাখা ভাল ... অন্য কোনও ধারণা?
নেলসন রোদারমেল

আহ - আপনি কি বোঝাতে চাইছেন যে আপনি ইনপুট এবং আউটপুট ক্যাপচার করতে চান, বা কমপক্ষে আপনি ইনপুট কমান্ডগুলি অনুরূপভাবে অনুরূপ আউটপুট দ্বারা অনুসরণ করতে চান? এটি করার একটি উপায় হ'ল ফলাফলগুলি অ্যারেতে ঠেকানো এবং তারপরে আউটপুট দ্বারা প্রাপ্ত কমান্ড আউটপুট করে গেট-হিস্ট্রি ফলাফলগুলি লুপ করা।
হেলভিক

স্টার্ট ট্রান্সক্রিপ্ট আপনি যা খুঁজছেন তা করতে পারে তবে এটি কেবল ক্রিয়াকলাপের কনসোল পাঠ্যের অংশে সীমাবদ্ধ থাকবে।
হেলভিক

আপনি এটি পেয়েছেন - একই ব্যাচের ফাইলের কাজ করে। আমাদের কাছে এখন একগুচ্ছ ব্যাচ ফাইল রয়েছে এবং আমি পাওয়ারশেল স্ক্রিপ্টগুলির সাথে প্রতিস্থাপনের সম্ভাব্যতার দিকে তাকিয়ে আছি। আমাদের সময় নির্ধারণ, আউটপুট ইতিহাস বজায় রাখার জন্য সফ্টওয়্যার রয়েছে ইত্যাদি ইনপুট কমান্ড প্রতিধ্বনিত না হলে ডিবাগ করা শক্ত ug আমি ফলাফলগুলি ধাক্কা দিয়ে অনুমান করছি যে প্রতিটি কমান্ডে আপনার এটি করা দরকার, আপনি ব্যতিক্রম ইত্যাদি ধরেন তা নিশ্চিত করুন so যাতে আপনার কোনও কিছুই মিস না হয়। অন্য একটি বিকল্প, তবে আমি যা খুঁজছি তা সম্পূর্ণ নয়। আমাদের কেবল একটি বিকল্প বাছাই করতে হবে এবং এটি দিয়ে চালাতে হবে।
নেলসন রোদারমেল

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