পাওয়ারসেল স্ক্রিপ্টের সমাপ্তি থেকে এসসিসিএম কীভাবে রিটার্ন কোডগুলি সনাক্ত করতে পারে?


9

আমি একটি এসসিসিএম 2012 অ্যাপ্লিকেশন ডিপ্লোয়মেন্টটি সফ্টওয়্যার ইনস্টল করতে ব্যবহার করছি। নির্দিষ্ট ইনস্টল টাইপ স্ক্রিপ্টড ইনস্টলার হিসাবে এসসিসিএম এক্সের বৈধতা ত্রুটির জন্য ব্যর্থ করে রেখেছিল। স্ক্রিপ্টটি পাওয়ারশেল এবং এসসিসিএম দ্বারা সম্পাদিত হয়েও সফলভাবে সফ্টওয়্যারটি ইনস্টল করে।

সমস্যাটি হ'ল এসসিসিএম স্ক্রিপ্ট থেকে সম্পূর্ণ হওয়া থেকে কেবল 0 এর রিটার্ন দেখে। আমি চেষ্টা করেছি write-host, return, write-outputএকটি নরম রিবুট করার জন্য কোড সহ, এবং শুধুমাত্র একটি লাইন আইটেম। অ্যাপ্লিকেশন সম্পাদন লগ 0 এর রিটার্ন ক্যাপচার করায় এগুলির কোনওটি এসসিসিএম দ্বারা পঠিত বলে মনে হয় না।

পাওয়ারসেল থেকে কীভাবে আপনি রিটার্ন কোডগুলি আউটপুট করবেন যাতে এসসিসিএম তাদের ব্যাখ্যা করতে পারে?


আপনি exit 1পাওয়ারশেল স্ক্রিপ্টের শেষে এমন কিছু চেষ্টা করেছেন ?
jscott

এই ক্ষেত্রে exitএকটি cmdঅন্তর্নির্মিত। অন্যান্য স্থাপনার সিস্টেম আমি .ps1 দিয়ে চালানো ফাইল দেখা startবা cmd /c powershell.exe somefile.ps1। এসসিসিএম পরীক্ষায় অ্যাক্সেস না করে স্পিটবোলিংয়ের জন্য দুঃখিত
jscott

উত্তর:


9

পাওয়ারসেল থেকে বেরিয়ে আসার কোডগুলির সাথে একটি জ্ঞাত সমস্যা রয়েছে (এস উত্তরটির শেষ দেখুন) যা এসসিসিএমের সাথে পাওয়ারশেল ইনস্টলেশন স্ক্রিপ্টগুলি ব্যবহার করার সময় প্রকাশিত হতে পারে। সমস্যার সমাধানের জন্য আমি দুটি পদক্ষেপ নিই:

  1. আমার কাছে সর্বদা এসসিসিএম একটি ব্যাচ ফাইল আহ্বান করে যা powershell.exeস্পষ্টভাবে অনুরোধ করে পাওয়ারশেল স্ক্রিপ্টটি চালায় ।
  2. আমি নিশ্চিত করছি যে ইনস্টলেশন স্ক্রিপ্টের প্রতিটি কোড পাথের স্পষ্ট কলে শেষ হবে [System.Environment]::Exit()

এই দুটি ব্যবস্থা সহ, আমি প্রস্থান কোড সম্পর্কিত কোনও সমস্যা পাইনি। এটি একটি বিশাল জয় কারণ ইনস্টলেশন স্ক্রিপ্টগুলির প্রস্থান কোডের সমস্যা সমাধানের প্রক্রিয়াটি একটি ধীর প্রক্রিয়া কারণ আপনাকে সমস্যার সমাধানের প্রতিটি পুনরাবৃত্তির জন্য এসসিএমএম ক্লায়েন্টের জন্য আপনার স্ক্রিপ্টের জন্য অপেক্ষা করতে হবে।

এখানে ব্যাচের ফাইল এবং পাওয়ারশেল স্ক্রিপ্টটি দেখতে কেমন:

Install-Application.bat

powershell.exe .\Install-Application.ps1
exit /b %errorlevel%

Install-Application.ps1

try 
{
    # do a bunch of installation stuff
    if ( $rebootNeeded )
    {
        [System.Environment]::Exit(3010)
    }

    [System.Environment]::Exit(0)
}
catch
{
    [System.Environment]::Exit(1)
}

এসসিসিএম পাওয়ারশেল স্ক্রিপ্টগুলি সরাসরি আমন্ত্রণ জানায় কেন প্রস্থান কোড অবিশ্বাস্য?

এখানে আমরা জানি কীভাবে প্রস্থান কোডগুলি অবিশ্বাস্য:

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