मैं स्वचालित रूप से विंडोज मशीन से उपयोगकर्ताओं को कैसे लॉग आउट कर सकता हूं?


9

मैं यह सुनिश्चित करना चाहूंगा कि एक एकल, विशिष्ट बहु-उपयोगकर्ता मशीन पर काम करने के बाद लोग लॉग आउट हो जाएं। वर्तमान में, अगला उपयोगकर्ता बस "उपयोगकर्ता को स्विच करेगा" और काम करना जारी रखेगा, लेकिन कई उपयोगकर्ता एक ही समय में लॉग ऑन होने के साथ खुले प्रोग्राम संसाधनों का उपयोग करने लगते हैं।

यदि वे 24 घंटे तक सक्रिय नहीं हैं, तो क्या मशीन से उपयोगकर्ताओं को स्वचालित रूप से लॉग आउट करना संभव है?


वैकल्पिक रूप से, क्या मध्य रात्रि में वर्तमान उपयोगकर्ता पर सभी को लॉग आउट करना संभव है?

कंप्यूटर एक विंडोज़ डोमेन नेटवर्क पर है - हालाँकि मैं केवल सिंगल मशीन के लिए काम करने के लिए ऑटो-लॉगआउट चाहता हूं (और मैं नेटवर्क व्यवस्थापक नहीं हूं)


1
क्या यह विंडोज डोमेन नेटवर्क है?
Moab

@Moab: कंप्यूटर एक विंडोज डोमेन नेटवर्क पर है - हालांकि मैं केवल सिंगल मशीन के लिए काम करने के लिए ऑटो-लॉगआउट चाहता हूं (और मैं नेटवर्क व्यवस्थापक नहीं हूं)।
जोनास

@ जोनास, शब्दों की आपकी पसंद इसे एक से अधिक पीसी की तरह आवाज देती है, आप इस नई जानकारी को शामिल करने के लिए अपने मूल पोस्ट को संपादित कर सकते हैं।
Moab

@ मोहब: मैंने प्रश्न को स्पष्ट करने का प्रयास किया है। क्या वो बेहतर है?
जोनास

यह अब है, एक नज़र है।
Moab

जवाबों:


6

वर्तमान उपयोगकर्ता से बाहर जाने के दौरान डिस्कनेक्ट किए गए उपयोगकर्ताओं को लॉग आउट करने के लिए, निम्न स्क्रिप्ट कोड को "logOffUsers.cmd" जैसे .cmd फ़ाइल में कॉपी करें और फिर इसे मध्यरात्रि में सेवा के रूप में चलाएं:

@echo off
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do logoff %%b

स्क्रिप्ट क्वेरी कमांड का उपयोग करके उन उपयोगकर्ताओं को खोजने के लिए काम करता है , जो "डिस्क" वाक्यांश को खोजकर डिस्कनेक्ट हो गए हैं, फिर उन्हें लॉग आउट कर रहे हैं।

यदि आप स्क्रिप्ट को सेवा के रूप में लगातार चलाने के लिए चाहते थे, तो एक निश्चित अवधि के लिए जब वे डिस्कनेक्ट / निष्क्रिय हो गए थे, तो आप लॉग आउट करेंगे।

@echo off
:Top
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do if %%d GTR 32 (logoff %%b) else %%e GTR 32 (logoff %%b)
choice /T 120 /C 1 /D 1 /N
goto top

यह स्क्रिप्ट समान क्वेरी कमांड का उपयोग करती है, लेकिन अतिरिक्त रूप से परिणामों के "IDLE TIME" भाग की जांच करती है, यदि निष्क्रिय समय 32 ("GTR 32") से अधिक है तो उपयोगकर्ता को लॉग ऑफ कर देगा। यह वाक्यांश दो बार होता है क्योंकि "IDLE TIME" टोकन दो अलग-अलग स्थितियों में हो सकता है। फिर "पसंद" से शुरू होने वाली रेखा ऑपरेशन को फिर से शुरू करने से 2 मिनट पहले इंतजार करती है। आप अपनी आवश्यकताओं के अनुसार "32" मान बढ़ा या घटा सकते हैं।

यहां मिला ।


@eMansipater: क्या आप यह समझाते हैं कि यह क्या करता है, और मैं 24 घंटे कहां सेट कर सकता हूं?
जोनास

1
सबसे अच्छा समाधान तेजी से उपयोगकर्ता स्विचिंग को अक्षम करना है, यह नए उपयोगकर्ता को अपने खाते में लॉग इन करने से पहले लॉग ऑफ करने के लिए मजबूर करेगा।
मोआब

1
@ तेजी से उपयोगकर्ता स्विचिंग अक्षम करने का अर्थ है कि यदि कोई पिछला उपयोगकर्ता स्क्रीन लॉक कर चुका है तो एक गैर-व्यवस्थापक लॉग इन नहीं कर सकता है। @ जोनास एक बुद्धिमान सवाल-- कोष्ठक में बिट समर्थन से कमांड कमांड का उपयोग कर रहा है। Microsoft.kb / 186592 उन उपयोगकर्ताओं को खोजने के लिए जिन्हें "डिस्क" वाक्यांश को खोजकर डिस्कनेक्ट किया गया है, फिर उन्हें लॉग आउट करें। पसंद कमांड केवल हर 2 मिनट में ऑपरेशन करने की प्रतीक्षा कर रहा है। 24 घंटे के विकल्प की आवश्यकता नहीं है क्योंकि इस स्क्रिप्ट को केवल एक उपयोगकर्ता को लॉग आउट करना चाहिए यदि कोई अन्य उपयोगकर्ता पहले ही लॉग इन कर चुका है।
eMansipater

1
@ जोनास एक बैच फ़ाइल "%% a" का उपयोग करता है, लेकिन कमांड लाइन पर एक ही काम करने के लिए आप इसके बजाय "% a" टाइप करते हैं - जिसे डिबगिंग में मदद करनी चाहिए। मेरे पास स्क्रिप्ट को आज़माने के लिए एक विंडोज़ मशीन नहीं है, इसलिए इसमें कुछ गलत हो सकता है। आप "GTR 32 (logoff %% b)" कमांड को "echo logoff %% b" को उद्धरणों के बिना, या "echo logoff% b" को बिना उद्धरण के टाइप करने का प्रयास कर सकते हैं। यदि वह इसे टाइप करता है तो यह प्रिंट आउट होगा। उपयोगकर्ताओं को यह लॉग ऑफ करने की कोशिश कर रहा है। यदि यह कचरा प्रिंट करता है या कुछ भी नहीं है तो यह दिखाएगा कि स्क्रिप्ट विकृत है। मुझे डर है कि मैं इसे जांचने के लिए दिल से "क्वेरी" आउटपुट स्वरूप नहीं जानता।
eMansipater

1
@ जोनास मुझे क्वेरी कमांड के उत्पादन को दोगुना करने का मौका मिला है और स्क्रिप्ट के वे हिस्से इसलिए थे ताकि लॉगआउट केवल तभी होगा जब उपयोगकर्ता समय की एक निर्धारित अवधि के लिए निष्क्रिय हो गया था। 'if %% d GTR 32' का मतलब लॉगऑफ कमांड चलाने का है अगर टोकन %% d 32 से अधिक है। दूरस्थ डेस्कटॉप आदि के उपयोग के आधार पर "निष्क्रिय" टोकन दो स्थानों पर दिखाई दे सकता है, यही कारण है कि स्क्रिप्ट दोनों परिदृश्यों के लिए जाँच। आपका संशोधित संस्करण बस किसी भी निष्क्रिय उपयोगकर्ता को लॉग आउट करता है, चाहे वह कितना भी लंबा हो। अगर मुझे विंडोज़ मशीन मिल सकती है तो मैं सिंटैक्स को सत्यापित कर सकता हूँ।
eMansipater

1
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do if %%d GTR 32 (logoff %%b) else (if %%e GTR 35 (logoff %%b))

ध्यान दें कि उपरोक्त केवल निष्क्रिय मिनटों के लिए काम करेगा, यदि आप डिस्कनेक्ट किए गए सत्र को लॉग आउट करने से पहले घंटों के निष्क्रिय समय का उपयोग करना चाहते हैं, तो आपको इसमें थोड़ा संशोधन करने की आवश्यकता है।

for /f "tokens=1-8 delims=,:/ " %%a in ('query user ^| find /i "disc"') do if %%d GTR 23 (if %%h GTR 2012 (logoff %%b))

23 घंटे को समायोजित करने के लिए, उपरोक्त 24 घंटे या अधिक निष्क्रिय समय पर काम करेगा। %% h 2012 यह सुनिश्चित करता है कि %% d मान एक घंटा है और एक मिनट का मूल्य नहीं है।


0

मैं "स्विच उपयोगकर्ता" सुविधा को अक्षम करने का एक तरीका ढूंढूंगा। यह मदद कर सकता है।


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