एक (PowerShell) स्क्रिप्ट यह कैसे निर्धारित कर सकती है कि वह स्टार्टअप पर चल रही है?


2

मैं एक PoSh स्टार्टअप स्क्रिप्ट का निर्माण कर रहा हूं जो एक जोड़े के निर्धारित कार्यों को आरंभ करता है। एक कार्य उपयोगकर्ता लॉगऑन पर चालू होता है और दूसरा निष्क्रिय पर चालू होता है। दोनों कार्य स्क्रिप्ट को फिर से चलाते हैं। स्टार्टअप में केवल स्क्रिप्ट के पहले भाग की आवश्यकता होती है, लेकिन पूरी स्क्रिप्ट को अन्य सभी समय पर चलना चाहिए।

कोई स्क्रिप्ट कैसे निर्धारित कर सकती है कि वह स्टार्टअप पर चल रही है या बाद के समय में चल रही है?


क्या आप एक अलग पैरामीटर, या एक अलग स्क्रिप्ट पास नहीं कर सकते हैं, जहां पूरी स्क्रिप्ट शेष कमांड के साथ जारी रखने से पहले स्टार्ट-अप भाग को कॉल करती है?
AFH

आप दिन भर में कितनी बार स्क्रिप्ट चला रहे हैं?
कोरी नॉटसन

बताना कठिन है। आइडल हर 15 मिनट में जांचता है, लेकिन कार्य को स्क्रिप्ट को चलाने में देरी होती है। लॉगऑन के तुरंत बाद भी स्क्रिप्ट चलती है, इसलिए यह निर्भर करता है कि कितने उपयोगकर्ता हैं।
टेकक्लोल्डिस्ट

लिनक्स सिस्टम पर मैं स्क्रिप्ट के हर रन पर एक फ़ाइल (अंतिम संपादित तिथि को अपडेट करूँगा)। फिर आप अपटाइम की तुलना अंतिम संपादन समय और वर्तमान समय के अंतर से कर सकते हैं। यह आपको बताता है कि अंतिम बूट समय आखिरी बूट से पहले था (स्क्रिप्ट बूट पर चलाया जाता है) या अंतिम बूट के बाद (स्क्रिप्ट निष्क्रिय पर चलती है)। मुझे उम्मीद है कि यह आपको / किसी को इस विचार को विंडोज वातावरण में अनुवाद करने में मदद करेगा।
ag17ever

जवाबों:


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
}

एक स्विच एक अच्छा विचार है। मैं एक दूसरे निर्धारित कार्य के आपके सुझाव को पलट दूंगा लेकिन GPO में स्विच का उपयोग करूंगा। हर बार, इसमें स्विच नहीं होगा और यह स्टार्टअप पर नहीं होगा। धन्यवाद।
टेकनॉलजेडिस्ट

तकनीकी रूप से, स्क्रिप्ट को नहीं पता कि यह स्टार्टअप पर चल रहा है, यह सिर्फ जानता है कि यह बताया जा रहा है कि यह स्टार्टअप पर चल रहा है। मैं अभी भी उत्सुक हूं अगर विंडोज के बाहर स्टार्टअप की स्थिति को छेड़ने के लिए अधिक निश्चित तरीका है। शायद जाँच करें कि क्या लास्ट बूट के बाद से लॉगऑन सेवा शुरू नहीं हुई है?
Teknowledgist

2

आप उपयोग कर सकते हैं

[System.Environment]::TickCount

सिस्टम शुरू होने के बाद से मिलीसेकंड की संख्या प्राप्त करने के लिए।


मैंने ऐसा ही कुछ सोचा था, लेकिन हर बार क्या मूल्य सही होगा? बहुत कम और कभी-कभी यह सोच सकता है कि यह स्क्रिप्ट से पहले अपडेट या अन्य देरी के कारण स्टार्टअप पर नहीं चल रहा है। बहुत लंबा (15 मिनट से परे) और कभी-कभी यह बेकार हो जाएगा और लगता है कि यह स्टार्टअप पर है।
टेकनॉलजेडिस्ट

उसके लिए शायद कोई सही जवाब नहीं है। यह स्टार्टअप पर लोड करने वाली सेवाओं और ड्राइवरों की संख्या जैसी चीजों के साथ भिन्न होगा, चाहे आपकी मशीन स्क्रिप्ट को अतुल्यकालिक या तुल्यकालिक रूप से चलाने के लिए सेट हो, आदि मुझे लगता है कि आपको अपने पर्यावरण के लिए मान प्राप्त करने के लिए कुछ टेस्ट रन करने की आवश्यकता होगी।
पैट्रिक सेमोर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.