मेरे पास एक पॉवरशेल स्क्रिप्ट है जिसका उपयोग मैं उपयोगकर्ता और कंप्यूटर सूचियों को सीएसवी फ़ाइलों को डंप करने के लिए करता हूं; यह बहुत अच्छा काम करता है और मैं इसे ज्यादा नहीं छूना चाहता। यह ActiveDirectory cmdlet और Get-ADComputer और Get-ADUser cmdlets का उपयोग करता है।
मैंने vb एक्सेल (2007) मैक्रोज़ का उपयोग किया है जो पहले पॉवरशेल स्क्रिप्ट को कॉल करता है। उदाहरण:
Sub test()
'
' test Macro
'
Set objShell = CreateObject("Wscript.Shell")
PSCommand1 = "Import-Module ActiveDirectory; "
objShell.Run "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command """ & PSCommand1 & """", 1, True
'
End Sub
अब, मैं विशेष रूप से आयात-मॉड्यूल कमांड का संदर्भ देता हूं, क्योंकि VBA के बाहर शक्तियां VBA और पॉवरशेल के बीच एक अंतर है ... ActiveDirectory मॉड्यूल नहीं मिल सकता है। यदि मैं कमांड को विफल होने के बाद शेल को छोड़ने के लिए शक्तिकृत कमांड को जोड़ने के लिए -exexit जोड़ता हूं, तो मैं टाइप कर सकता हूं:
get-module -ListAvailable
और ActiveDirectory मॉड्यूल सूची में नहीं है। पर्यावरण चर यह दिखाता है कि यह एक नियमित पॉवरशेल्ड विंडो के रूप में मॉड्यूल के लिए समान स्थानों में दिख रहा है (मेरे उपयोगकर्ता फ़ोल्डर के तहत, इसलिए यह मेरे संदर्भ में चल रहा है)। AD मॉड्यूल एक नियमित पॉवरशेल विंडो में -ListAvailable के तहत दिखाता है।
मैंने वास्तविक AD मॉड्यूल को सीधे रूप से संबोधित करने के लिए आयात-मॉड्यूल कमांड को संशोधित करने का प्रयास किया है, और मुझे इसे लोड करने के लिए नहीं मिल सकता है।
क्या कोई ऐसा तरीका सोच सकता है कि Excel 2007 में VB मैक्रो से लॉन्च किए गए एक पॉवरशेल सत्र को दिखाने के लिए AD मॉड्यूल प्राप्त किया जाए?