সাফল্যের সাথে পাওয়ারশেল স্ক্রিপ্টটি চালানোর পরে কেন পেক্সেক্স হ্যাং হয়ে যায়?


12

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

আমি নিম্নলিখিত চেষ্টা করেছি:

  • পাওয়ারশেল স্ক্রিপ্টের শেষে exitএবং যুক্ত হচ্ছেexit 0
  • এই এসএফ প্রশ্নের< NUL উত্তর অনুসারে পিএজেক্সেক কলটির শেষে একটি যুক্ত করা হচ্ছে
  • একটি >stdout পুনর্নির্দেশ যোগ করা

এইভাবেই আমি প্রকৃতপক্ষে ফোন করছি:

psexec \\target -u domain\username -p password powershell c:\path\script.ps1

আমি যাই করি না কেন, স্থানীয়ভাবে সেমিডি প্রম্পটে না আসা পর্যন্ত এটি স্থির থাকে। আমি এন্টার চাপার পরে, আমি বার্তাটি পেয়েছি:

powershell exited on target with error code 0.

উত্তর:


11

দেখা যাচ্ছে এটি একটি সাধারণ সমস্যা। সমাধানটি এখানে পেয়েছি । মূলত, আপনি স্ট্যান্ডিনে কিছু ডেটা সিএমডি দিয়ে পাইপ করলে এটি কার্যকর করার পরে যথাযথভাবে ফিরে আসবে (কারণ এটি সেন্টিমিডির মাধ্যমে চালিত হচ্ছে, পাওয়ারশেল নয়)।

উদাহরণ:

psexec \\target -u domain\username -p password cmd /c "echo . | powershell c:\path\script.ps1"

এটি কি কমান্ড লাইন - কাস্টম স্ক্রিপ্ট বা কমান্ড লাইন - এক্সিকিউটেবল (টিমসিটিতে) হিসাবে সেট আপ করা আছে?
ওয়াজটেক তুরোইচিজ

ঠিক আছে Ive এটি নির্বাহযোগ্য হিসাবে সেট আপ এবং এটি সাহায্য করে। ধন্যবাদ সঙ্গী আমি এটি নির্ণয় করতে 1 দিন অতিবাহিত করেছি। কথা ছড়িয়ে দিন!
ওয়াজটেক তুরোইচিজ

একদিন পরে সমস্যাটি ফিরে
এল

11

আমি জানি উত্তরটি দেরিতে আসে এটি ইতিমধ্যে নির্ধারিত হয়ে গিয়েছিল, না হলে এটি ভবিষ্যতের দর্শকদের পক্ষে উপকারী হতে পারে।

হ্যাং থেকে আসতে সক্ষম হওয়ার জন্য এসটিডিআইএনকে পাওয়ারশেল এক্সিকিউশন ইনর্ডারে পুনরায় নির্দেশনা দিতে হবে (এটি এটি এসটিডিআইএন-এ অপেক্ষা করে)। এই ব্যবহার করতে সক্ষম হতে - ইনপুটফর্ম্যাট কিছুই না

powershell -inputformat none -File powershell_script.ps1 কাজ করবে.

চেক করুন - https://connect.microsoft.com/PowerShell/feedback/details/572313/powershell-exe-can-hang-if-stdin-is- ডিরেক্টরি


কেবল এটিই কাজ করে না, তবে এটি গ্রহণযোগ্য উত্তরগুলি কেন কাজ করে তাও ব্যাখ্যা করে। ধন্যবাদ!
jpaugh

5
psexec \\target -u domain\username -p password -d powershell c:\path\script.ps1

সমস্যাও সমাধান করে।

-dPsexec এর পতাকাটি একটি ইন্টারেক্টিভ পদ্ধতিতে "রান এবং প্রস্থান" এর মতো:

-ডি অ্যাপ্লিকেশনটি সমাপ্ত হওয়ার জন্য অপেক্ষা করবেন না।

কেবল অ-ইন্টারেক্টিভ অ্যাপ্লিকেশনগুলির জন্য ব্যবহার করুন।


0

পাওয়ারশেলটি প্রস্থান করছে না। এই কমান্ড লাইনের চেষ্টা করুন

Powershell -command script.ps1

0

আমি psexecভিবিএস স্ক্রিপ্ট নিয়ে চলছিলাম এবং সমাধানটি সেরা (EX psexec \\target -u domain\username -p password cmd /c "echo . | powershell c:\path\script.ps1":) হিসাবে চিহ্নিত হ'ল প্রতিটি তৃতীয় বা ততোধিক রান চলাকালীন আমার জন্য কাজ করছিল। আমি খনন করছিলাম এবং প্রতিটি স্যুইচের বিবরণ পেয়েছি

আমি "-s" চেষ্টা করার সিদ্ধান্ত নিয়েছি এবং প্রতিবারের জন্য যা আমার জন্য কাজ করেছে তা এখানে আমার উদাহরণ:

call C:\psexec.exe %SERVER_NAME% -u %USERNAME% -p %PASSWORD% -h -s cscript %pathTomyVBSscript%
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.