अधिकांश लोकप्रिय PowerShell मॉड्यूल आधिकारिक PowerShell Gallery (PSGallery) रिपॉजिटरी से Install-Module कमांड का उपयोग करके ऑनलाइन स्थापित किए जाते हैं। हालांकि, यदि आपका कंप्यूटर एक अलग नेटवर्क में है या PSRepository तक सीधी पहुंच प्रतिबंधित है, तो आप PowerShell मॉड्यूल स्थापित नहीं कर पाएंगे। यही बात तब भी लागू होती है जब आप Windows Server होस्ट्स पर PowerShell मॉड्यूल स्थापित करने का प्रयास कर रहे होते हैं, जिनमें आमतौर पर सीधी इंटरनेट पहुंच अवरुद्ध होती है। इस लेख में, हम दिखाएंगे कि PowerShell मॉड्यूल ऑफ़लाइन कैसे स्थापित करें और रिमोट कंप्यूटर से मॉड्यूल आयात करें (उदाहरण के लिए, SQLServer प्रबंधन PoSh मॉड्यूल का उपयोग करते समय)।
ध्यान दें कि PowershellGallery.com से मॉड्यूल डाउनलोड करने के लिए कोई सीधे लिंक नहीं हैं। साइट से आप केवल NuGet पैकेज (एक .nupkg फ़ाइल) डाउनलोड कर सकते हैं। आप NUPKG फ़ाइल से PowerShell मॉड्यूल स्थापित कर सकते हैं, लेकिन यह पूर्ण मॉड्यूल इंस्टॉलेशन नहीं होगा (मुख्य समस्या यह है कि निर्भरताओं का समाधान नहीं होता है)।
ऑफ़लाइन कंप्यूटर्स पर PowerShell मॉड्यूल कैसे स्थापित करें?
सबसे पहले, इंटरनेट एक्सेस वाले कंप्यूटर पर आपको जिस PowerShell मॉड्यूल की आवश्यकता है उसे स्थापित करें।
कंप्यूटर पर PowerShell संस्करण 5.1 या नया स्थापित होना चाहिए:
$PSVersionTable.PSVersion
सुनिश्चित करें कि मॉड्यूल PSGallery में मौजूद है:
Find-Module –Name *SqlServer*| Select Name, Version, Repository
मॉड्यूल को अपने कंप्यूटर पर निर्दिष्ट स्थानीय फ़ोल्डर में डाउनलोड करें:
Save-Module –Name SqlServer –Path C:\PS\
फ़ोल्डर को उस दूसरे कंप्यूटर पर कॉपी करें जिस पर आप मॉड्यूल स्थापित करना चाहते हैं।
आइए देखें कि PowerShell मॉड्यूल किन फ़ोल्डर्स में संग्रहीत हैं:
$env:PSModulePath -split ";"
जैसा कि आप देख सकते हैं, PowerShell मॉड्यूल निम्न पथों में से एक पर स्थित हैं:
C:\Users\username\Documents\WindowsPowerShell\Modules($Home\Documents\PowerShell\Modules) – इस फ़ोल्डर में PowerShell मॉड्यूल केवल इस उपयोगकर्ता के लिए उपलब्ध हैं (CurrentUser);C:\Program Files\WindowsPowerShell\Modules($Env:ProgramFiles\WindowsPowerShell\Modules) — सभी कंप्यूटर उपयोगकर्ताओं के लिए मॉड्यूल स्थापित करने के लिए उपयोग किया जाने वाला पथ (-Scope AllUsers);C:\Windows\system32\WindowsPowerShell\v1.0\Modules– अंतर्निहित मॉड्यूल के लिए डिफ़ॉल्ट फ़ोल्डर।
मॉड्यूल को C:\Program Files\WindowsPowerShell\Modules में कॉपी करें।
सुनिश्चित करें कि SQLServer मॉड्यूल अब उपलब्ध है:
Get-Module -Name SQLServer -ListAvailable
आप मॉड्यूल निर्देशिका को निम्न प्रकार से प्राप्त कर सकते हैं:
(Get-Module -ListAvailable SQLServer).path
मॉड्यूल में उपलब्ध कमांड्स की सूची प्रदर्शित करें:
Get-Command -Module SQLServer
उसी तरह, आप कोई भी मॉड्यूल स्थापित कर सकते हैं। मैं अक्सर SQLServer, PSWindowsUpdate, या VMWare के लिए PowerCLI मॉड्यूल स्थापित करने के लिए इस विधि का उपयोग करता हूं।
स्पष्ट कारणों से, AzureAD और Exchange Online PowerShell मॉड्यूल को ऑफ़लाइन डिवाइस पर स्थापित करने का कोई मतलब नहीं है।
रिमोट कंप्यूटर से PowerShell मॉड्यूल आयात करें
यदि आप PowerShell मॉड्यूल को सभी कंप्यूटर्स पर स्थापित नहीं करना चाहते हैं, तो आप PSRemoting का उपयोग करके किसी भी मॉड्यूल को रिमोट कंप्यूटर से आयात कर सकते हैं:
$session = New-PSSession -ComputerName dub-sql1
रिमोट कंप्यूटर पर स्थापित मॉड्यूल्स की सूची प्रदर्शित करने के लिए:
Get-Module -PSSession $session –ListAvailable
निर्दिष्ट PowerShell मॉड्यूल को अपने कंप्यूटर पर आयात करने के लिए:
Import-Module -PSsession $session -Name SqlServer
समाप्त होने पर सत्र बंद करना न भूलें:
Remove-PSSession $session
रिमोट कंप्यूटर पर स्थापित PowerShell मॉड्यूल को स्थानीय रूप से उपयोग करने का एक और दिलचस्प तरीका Implicit remoting के माध्यम से है।
Invoke-Command का उपयोग करके रिमोट कंप्यूटर से कनेक्ट करें और वांछित PowerShell मॉड्यूल आयात करें:
$session = New-PSSession -ComputerName dub-sql1
Invoke-Command {Import-Module SqlServer} -Session $session
रिमोट सत्र से मॉड्यूल कमांडलेट्स को स्थानीय मॉड्यूल में निर्यात करें:
Export-PSSession -Session $s -CommandName *-Sql* -OutputModule RemoteSQLServer -AllowClobber
यह कमांड आपके कंप्यूटर पर एक नया RemoteSQLServer PowerShell मॉड्यूल बनाता है (C:\Program Files\WindowsPowerShell\Modules में)। कमांडलेट फ़ाइलें स्वयं कॉपी नहीं की जाती हैं।
सत्र बंद करें:
Remove-PSSession $session
फिर इस मॉड्यूल से PowerShell कमांडलेट्स का उपयोग करने के लिए, आपको बस उन्हें सत्र में आयात करने की आवश्यकता है:
Import-Module RemoteSQLServer
सभी SQL मॉड्यूल कमांडलेट्स आपके PowerShell कंसोल को बंद करने या मॉड्यूल को हटाने तक स्पष्ट कनेक्शन स्थापित किए बिना उपलब्ध होंगे। Invoke-Sqlcmd का उपयोग करके MS SQL डेटाबेस क्वेरी करने का प्रयास करें। सभी MSSQL कमांड उपलब्ध हैं।