मेरे पास एक स्क्रिप्ट है (चलिए इसे myPSScript.ps1 कहते हैं) जो दो पैरामीटर लेता है और पूर्व निर्धारित चरणों को करता है। स्क्रिप्ट एक विंडोज सर्वर बॉक्स में स्थित है जो लोग स्क्रिप्ट लॉग इन और निष्पादित करते हैं। दिए गए समय में दो उपयोगकर्ताओं को लॉग इन करने का समर्थन करता है।पावरहेल - स्क्रिप्ट को आमंत्रित करने वाले उपयोगकर्ता को ढूंढें
मैं यह जानना चाहता हूं कि किसने स्क्रिप्ट का आह्वान किया था।
(Get-WmiObject -Class Win32_Process | Where-Object {$_.ProcessName -eq 'explorer.exe'}).GetOwner() | Format-Table Domain, User
यह तब काम करता है जब उपयोगकर्ता वर्तमान में लॉग इन होता है और स्क्रिप्ट चलाने की कोशिश करता है। लेकिन क्या होगा यदि मेरे पास निर्धारित कार्यों में बैच फ़ाइल है और एक ही स्क्रिप्ट चलाएं?
उस स्थिति में एक ही आदेश एक शून्य अपवाद देता है, क्योंकि मशीन में कोई भी लॉग इन नहीं होता है।
क्या यह पता लगाने का कोई तरीका है कि कौन सी प्रक्रिया ने पावरहेल स्क्रिप्ट को बुलाया। मैं स्टार्ट-ट्रांसक्रिप्ट रिकॉर्ड याद करता हूं जो उपयोगकर्ता कमांड आदि से चलाया जाता है, इसलिए यह संभव होना चाहिए?
धन्यवाद! संजीव
बिल्कुल सही। यह तब भी काम करता है जब स्क्रिप्ट को एक अलग मशीन और विभिन्न उपयोगकर्ताओं से Invoke-Command का उपयोग करके ट्रिगर किया जाता है - जो वास्तव में मैं ढूंढ रहा था। अब मैं ऑडिट कर सकता हूं कि कौन और कब करता है :) – Sanjeev
एक और समस्या। आइए मान लें कि एक डोमेन उपयोगकर्ता का उपयोग कर एक विंडोज सर्वर में लॉग इन किया गया है। उस स्थिति में स्क्रिप्ट हमें डोमेन उपयोगकर्ता देता है, लेकिन जब यह एक से अधिक व्यक्ति द्वारा उपयोग किया जाता है तो यह सहायक नहीं होता है। टर्मिनल सेवा प्रबंधक क्लाइंट नाम दिखाता है, जो क्लाइंट का नाम है जिसमें से व्यक्ति ने कनेक्ट किया है। क्या उस जानकारी को पाने का कोई तरीका है? – Sanjeev
PSTerminalServices मॉड्यूल का उपयोग करना उस जानकारी को प्राप्त करने का विकल्प है। – Sanjeev