Enter-PSSession cmdlet आपको दूरस्थ कंप्यूटर के साथ एक सतत इंटरैक्टिव पावरशेल सत्र स्थापित करने की अनुमति देता है। आपके द्वारा अपने कमांड प्रॉम्प्ट में दर्ज किए गए सभी आदेश दूरस्थ कंप्यूटर पर निष्पादित होते हैं। इस लेख में, हम एंटर-PSSession की मुख्य विशेषताओं की व्याख्या करेंगे और इसका उपयोग विंडोज 10/11 और विंडोज सर्वर 2022/2019/2016 चलाने वाले कंप्यूटरों को दूरस्थ रूप से प्रबंधित करने के लिए कैसे किया जा सकता है।
Enter-PSSession
cmdlet पॉवरशेल रिमोटिंग . द्वारा संचालित है ढेर। PSRemoting प्रबंधन के लिए वेब सेवाओं . पर आधारित है (WS-प्रबंधन) और WinRM सेवा (विंडोज रिमोट मैनेजमेंट)। कंप्यूटर के बीच यातायात प्रोटोकॉल स्तर पर एन्क्रिप्ट किया गया है (आप वैकल्पिक रूप से PSRemoting WinRM ट्रैफ़िक के लिए SSL एन्क्रिप्शन को सक्षम कर सकते हैं)। आप NTLM और Kerberos सहित विभिन्न प्रमाणीकरण विधियों का उपयोग कर सकते हैं। साधारण मामले में। एक दूरस्थ कंप्यूटर के साथ एक इंटरैक्टिव पावरशेल सत्र स्थापित करने के लिए, आपको कनेक्ट करने के लिए केवल कंप्यूटर का नाम निर्दिष्ट करना होगा (कंप्यूटर नाम विकल्प)। किसी दूरस्थ कंप्यूटर से कनेक्ट करने के लिए, बस कमांड चलाएँ:
Enter-PSSession hq-srv01.woshub.com
यदि वर्तमान उपयोगकर्ता के पास दूरस्थ होस्ट से कनेक्ट करने की अनुमति है, तो आप दूरस्थ कंप्यूटर पर एक इंटरैक्टिव शेल से कनेक्ट होंगे।
कनेक्ट करने से पहले आप उपयोगकर्ता क्रेडेंशियल के लिए संकेत दे सकते हैं:
Enter-PsSession –ComputerName hq-srv01.woshub.com –Credentials woshub\maxbak
या:
$creds = Get-Credential
Enter-PSSession -ComputerName hq-srv01 -Credential $creds
ध्यान दें कि दूरस्थ कंप्यूटर का नाम अब आपके पावरशेल प्रॉम्प्ट ([hq-srv01.woshub.com] की शुरुआत में वर्गाकार कोष्ठकों में दिखाया गया है। ) इस तरह आप पता लगा सकते हैं कि आप स्थानीय या दूरस्थ शेल सत्र में चल रहे हैं या नहीं।
दूरस्थ रूप से चलने वाले सभी आदेशों का आउटपुट आपके स्थानीय कंसोल में प्रदर्शित होता है। आप hostname
चला सकते हैं आदेश दें और सुनिश्चित करें कि आप इसे किसी दूरस्थ कंप्यूटर पर चला रहे हैं।
आप इस इंटरैक्टिव कमांड प्रॉम्प्ट (आपके विशेषाधिकारों के अनुसार) में कोई भी कमांड चला सकते हैं।
उदाहरण के लिए, आइए पावरशेल का उपयोग करके विंडोज नेटवर्क सेटिंग्स प्रदर्शित करें:
Get-NetIPConfiguration
आप दूरस्थ कंप्यूटर पर DNS सेटिंग्स बदल सकते हैं:
Set-DNSClientServerAddress –InterfaceIndex 6 –ServerAddresses 192.168.13.4, 192.168.100.4
एक इंटरैक्टिव रिमोट शेल सत्र से बाहर निकलने के लिए, Exit-PSSession
चलाएं या exit
. PS प्रॉम्प्ट सामान्य हो जाएगा और आप अपने स्थानीय PowerShell कंसोल पर वापस आ जाएंगे:
पहले, व्यवस्थापक मुख्य रूप से PsExec . का उपयोग करते थे एक दूरस्थ विंडोज कंप्यूटर पर एक इंटरैक्टिव कमांड प्रॉम्प्ट चलाने के लिए उपकरण। हालाँकि, जब Enter-PSSession दिखाई दिया, तो उन्हें अब बाहरी उपकरणों का उपयोग करने की आवश्यकता नहीं है।
Windows Server 2016/2019/2022 में, PowerShell Remoting डिफ़ॉल्ट रूप से सक्षम है (आप इसे सर्वर प्रबंधक -> स्थानीय सर्वर -> दूरस्थ प्रबंधन =सक्षम में देख सकते हैं)।
डेस्कटॉप में Windows संस्करण (Win10, Win11), PSRemoting और WinRM अक्षम हैं।
आप नीचे दिए गए आदेश का उपयोग करके जांच सकते हैं कि आपके वर्तमान कंप्यूटर पर PSRemoting सक्षम है या नहीं:
Get-PSSessionConfiguration
इस आदेश का उपयोग उन उपयोगकर्ताओं और समूहों की सूची प्राप्त करने के लिए भी किया जाता है जिन्हें WinRM से कनेक्ट करने की अनुमति है। PSRemoting का उपयोग करने के लिए, एक उपयोगकर्ता खाता व्यवस्थापकों . का सदस्य होना चाहिए या दूरस्थ प्रबंधन उपयोगकर्ता समूह। आप गैर-व्यवस्थापक उपयोगकर्ताओं के लिए WinRM PowerShell Remoting को सक्षम करने के तरीके के बारे में अधिक जान सकते हैं।
आप परीक्षण कर सकते हैं कि क्या आप पावरशेल रिमोटिंग के माध्यम से स्थानीय रूप से अपने कंप्यूटर से कनेक्ट करने में सक्षम हैं:
Test-WSMan -ComputerName localhost
यदि कमांड WSMan स्कीमा संस्करण लौटाता है, तो PS रिमोटिंग का उपयोग करने वाले कंप्यूटर से दूरस्थ कनेक्शन की अनुमति है।
यदि पावरशेल रिमोटिंग अक्षम है या कॉन्फ़िगर नहीं है, तो निम्न त्रुटि दिखाई देती है:
Test-WSMan : <f:WSManFaultxmlns:f="https://schemas.microsoft.com/wbem/wsman/1/wsmanfault" Code="2150858770" Machine="srv02"><f:Message>The client cannot connect to the destination specified in the request. Verify that the service on the destination is running and is accepting requests. Consult the logs and documentation for the WS-Management service running on the destination, most commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to analyze and configure the WinRM service: "winrm quickconfig".
पावरशेल रिमोटिंग को सक्षम करने के लिए, यह कमांड चलाएँ:
Enable-PSRemoting -Force
यह आदेश:
- WinRM सेवा को सक्षम करता है और इसके स्टार्टअप प्रकार को स्वचालित पर सेट करता है;
- डिफ़ॉल्ट WinRM पोर्ट (HTTP ट्रैफ़िक के लिए TCP/5985) पर एक कनेक्शन बिंदु बनाता है;
- Windows फ़ायरवॉल में WS-प्रबंधन के लिए अपवाद जोड़ता है (यदि आप PSRemoting को मैन्युअल रूप से कॉन्फ़िगर कर रहे हैं, तो PowerShell का उपयोग करके या GPO के साथ फ़ायरवॉल नियम जोड़ें)
- दूरस्थ पावरशेल सत्रों की अनुमति देता है
- WinRM सेवा को पुनरारंभ करता है
सुनिश्चित करें कि WinRM सेवा चल रही है और स्वचालित रूप से प्रारंभ होने के लिए सेट है:
Get-Service WinRM | Select MachineName,Name,Status, StartType
. चुनें
सक्षम-PSRemoting आदेश केवल डोमेन और निजी विंडोज नेटवर्क प्रोफाइल के लिए काम करता है। यदि आप सार्वजनिक नेटवर्क में कंप्यूटर पर PSRemoting को सक्षम करना चाहते हैं, तो नेटवर्क स्थान को सार्वजनिक से निजी में बदलें, या नीचे दिए गए आदेश का उपयोग करें:
Enable-PSRemoting -SkipNetworkProfileCheck -Force
एक सक्रिय निर्देशिका डोमेन में, सर्वर और कंप्यूटर पर विंडोज रिमोट मैनेजमेंट (PSRemoting) को केंद्रीय रूप से कॉन्फ़िगर करने का सबसे आसान तरीका समूह नीति है।
पावरशेल रिमोटिंग पर रिमोट कंप्यूटर से कनेक्ट करने के लिए आधुनिक पावरशेल संस्करण (वी 6 या वी 7) सुरक्षित शैल प्रोटोकॉल (एसएसएच) का समर्थन करते हैं। एक दूरस्थ कंप्यूटर पर एक SSH कनेक्शन बिंदु उपलब्ध होना चाहिए (Windows 10 पर अंतर्निहित OpenSSH सर्वर को कैसे सक्षम करें?) आप इस कमांड का उपयोग करके SSH पर एक इंटरैक्टिव PSRemoting सत्र शुरू कर सकते हैं:
Enter-PSSession -HostName [email protected]
या RSA कुंजी का उपयोग करके SSH पर प्रमाणित करें:
Enter-PSSession -HostName [email protected]:22 -KeyFilePath c:\PS\max_rsa_key
आप नया-PSSession . के साथ Enter-PSSession का उपयोग कर सकते हैं :
$s = New-PSSession -ComputerName hq-srv01.woshub.com
Enter-PSSession -Session $s
Enter-PSSession कई प्रमाणीकरण विधियों का समर्थन करता है। आप वह सेट कर सकते हैं जिसे आप उपयोग करना चाहते हैं - प्रमाणीकरण पैरामीटर। बेसिक, डाइजेस्ट, केर्बरोस, क्रेडएसएसपी, नेगोशिएटविथइम्प्लिकिटक्रेडेंशियल, नेगोशिएट चैलेंज प्रमाणीकरण विधियों का समर्थन किया जाता है।
ऊपर के उदाहरण में, हमने दिखाया कि एक ही विंडोज डोमेन में कंप्यूटरों के बीच एक इंटरैक्टिव एंटर-पीएससेशन कनेक्शन कैसे बनाया जाता है (यह कनेक्शन के लिए एक FQDN या संक्षिप्त नाम निर्दिष्ट करने के लिए पर्याप्त है, Kerberos प्रमाणीकरण का उपयोग किया जाता है)। यदि आप किसी दूरस्थ कंप्यूटर के IP पते या CNAME का उपयोग करके कनेक्ट करने का प्रयास करते हैं, तो आपको प्रमाणित नहीं किया जाएगा:
Enter-PSSession : Connecting to remote server 192.168.31.12 failed with the following error message: The WinRM client cannot process the request. Default authentication may be used with an IP address under the following conditions: the transport is HTTPS or the destination is in the TrustedHosts list, and explicit credentials are provided. Use winrm.cmd to configure TrustedHosts. Note that computers in the TrustedHosts list might not be authenticated.
अपने आईपी पते का उपयोग करके किसी दूरस्थ कंप्यूटर से कनेक्ट करने के लिए, आप होस्ट को विश्वसनीय होस्ट (विश्वसनीय होस्ट) की सूची में जोड़ सकते हैं या WinRM के लिए SSL का उपयोग कर सकते हैं (यह अधिक सुरक्षित है)।
विश्वसनीय होस्ट में IP पता जोड़ने के लिए, यह कमांड चलाएँ:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value 192.168.13.5
आप वाइल्डकार्ड मास्क का उपयोग करके एक विश्वसनीय होस्ट जोड़ सकते हैं:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value *.woshub.com
विश्वसनीय मेजबानों की सूची प्रदर्शित करने के लिए:
Get-Item WSMan:\localhost\Client\TrustedHosts
उसी तरह, आप अपने होस्ट को किसी दूरस्थ कंप्यूटर पर विश्वसनीय होस्ट की सूची में जोड़ सकते हैं।
सेवा फिर से शुरू करें:
Restart-Service WinRM
किसी दूरस्थ कंप्यूटर से उसके IP पते का उपयोग करके कनेक्ट करने के लिए, निम्न कमांड चलाएँ:
Enter-PSSession -ComputerName 192.168.13.5 -Credential (Get-Credential -UserName woshub\maxbak)
Enter-PSSession
और New-PSSession
cmdlets लगातार एक-से-एक दूरस्थ सत्र बनाते हैं और अधिकतर इंटरैक्टिव परिदृश्यों में उपयोग किए जाते हैं। यदि आप स्क्रिप्ट या कार्य को स्वचालित रूप से चलाना चाहते हैं या एक साथ कई दूरस्थ कंप्यूटरों पर कुछ करना चाहते हैं, तो Invoke-Command कमांड का उपयोग करें।