কোনও (পাওয়ারশেল) স্ক্রিপ্ট কীভাবে নির্ধারণ করতে পারে যে এটি শুরুতে চলছে?


2

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

কোনও স্ক্রিপ্ট কীভাবে নির্ধারণ করতে পারে যখন এটি প্রারম্ভকালে বনাম পরবর্তী সময়ে চলছে?


আপনি কি আলাদা প্যারামিটার বা একটি ভিন্ন স্ক্রিপ্ট পাস করতে পারবেন না, যেখানে পুরো কমান্ডটি অবশিষ্ট কমান্ডগুলি চালিয়ে যাওয়ার আগে স্টার্ট-আপ অংশটিকে কল করে?
এএফএইচ

সারা দিন আপনি কতবার স্ক্রিপ্টটি চালাচ্ছেন?
কোরি নটসন

বলা কঠিন. প্রতি 15 মিনিটে অলস চেক করে তবে স্ক্রিপ্টটি চালাতে দেরি হয়। স্ক্রিপ্টটি লগনের খুব শীঘ্রই চলে, সুতরাং এটি কতজন ব্যবহারকারীর উপর নির্ভর করে।
টেকনলেডজিস্ট

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

উত্তর:


3

আমি প্যারামিটার বিকল্প হিসাবে ভাল সুপারিশ করবে। প্রারম্ভেই চালান, যা কল দুই পরিকল্পনামাফিক কাজ, এক করুন -AtStartupসুইচ। তারপর আপনি সুইচ ছাড়া স্ক্রিপ্ট কল একটি দ্বিতীয় কাজটি করতে পারেন। পরামিতি জন্য সুইচ টাইপ এই কাজের জন্য নির্মিত হয়েছে।

Function Start-Task {
    [CmdletBinding()]
    Param(
       [Parameter(Mandatory=$True,Position=1)]
       [string]$paramOne,

       [Parameter(Mandatory=$True)]
       [string]$paramTwo,

       [switch]$AtStartup
    )

    if ($AtStartup) {
        #Do startup activities....
        Test-Connection -ComputerName Localhost
    }

    #Rest of script work
}

একটি সুইচ একটি ভাল ধারণা। আমি আপনার দ্বিতীয় নির্ধারিত কাজের পরামর্শটি উল্টে দেব তবে জিপিওতে স্যুইচটি ব্যবহার করুন। প্রতিটি অন্যান্য সময়, এটিতে স্যুইচ থাকবে না এবং এটি শুরুতে হবে না। ধন্যবাদ।
Teknowledgist

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

2

আপনি ব্যবহার করতে পারেন

[System.Environment]::TickCount

সিস্টেমটি শুরু হওয়ার পর থেকে ব্যয় হয়েছে মিলিসেকেন্ডগুলির সংখ্যা পেতে।


আমি এর অনুরূপ কিছু ভেবেছিলাম, তবে প্রতিবারের মানটি কী হবে? খুব সংক্ষিপ্ত এবং কখনও কখনও এটি মনে হতে পারে যে এটি স্ক্রিপ্টের আগে আপডেটগুলি বা অন্যান্য বিলম্বের কারণে শুরুতে চলছে না। খুব দীর্ঘ (15 মিনিটের বেশি) এবং কখনও কখনও এটি নিষ্ক্রিয় অবস্থায় চলতে থাকে এবং মনে হয় এটি শুরুতে রয়েছে।
টেকনলেডজিস্ট

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