Enter-PSSession: เรียกใช้คำสั่งระยะไกลใน Interactive Shell
cmdlet Enter-PSSession ช่วยให้คุณสร้างเซสชัน PowerShell แบบโต้ตอบถาวรด้วยคอมพิวเตอร์ระยะไกล คำสั่งทั้งหมดที่คุณป้อนในพรอมต์คำสั่งจะดำเนินการบนคอมพิวเตอร์ระยะไกล ในบทความนี้ เราจะอธิบายคุณสมบัติหลักของ Enter-PSSession และวิธีการใช้ในการจัดการคอมพิวเตอร์ที่ใช้ Windows 10/11 และ Windows Server 2022/2019/2016 จากระยะไกล
นี้
Enter-PSSessioncmdlet ขับเคลื่อนโดยสแต็ก PowerShell Remoting PSRemoting ขึ้นอยู่กับบริการเว็บสำหรับการจัดการ (การจัดการ WS) และ บริการ WinRM (การจัดการระยะไกลของ Windows) การรับส่งข้อมูลระหว่างคอมพิวเตอร์ถูกเข้ารหัสที่ระดับโปรโตคอล (คุณสามารถเลือกเปิดใช้งานการเข้ารหัส SSL สำหรับการรับส่งข้อมูล PSRemoting WinRM) คุณสามารถใช้วิธีการรับรองความถูกต้องต่างๆ รวมถึง NTLM และ Kerberos
ในกรณีง่ายๆ หากต้องการสร้างเซสชัน PowerShell แบบโต้ตอบกับคอมพิวเตอร์ระยะไกล คุณต้องระบุเฉพาะชื่อคอมพิวเตอร์ที่จะเชื่อมต่อ (ตัวเลือก ชื่อคอมพิวเตอร์) หากต้องการเชื่อมต่อกับคอมพิวเตอร์ระยะไกล ให้รันคำสั่ง:
Enter-PSSession hq-srv01.a-d.site
หากผู้ใช้ปัจจุบันได้รับอนุญาตให้เชื่อมต่อกับรีโมตโฮสต์ คุณจะเชื่อมต่อกับเชลล์แบบโต้ตอบบนคอมพิวเตอร์ระยะไกล
คุณสามารถขอข้อมูลรับรองผู้ใช้ก่อนเชื่อมต่อ:
Enter-PsSession -ComputerName hq-srv01.a-d.site -Credentials a-d\maxbakหรือ :
$creds = Get-Credential
Enter-PSSession -ComputerName hq-srv01 -Credential $credsโปรดทราบว่าขณะนี้ชื่อของคอมพิวเตอร์ระยะไกลจะแสดงในวงเล็บเหลี่ยมที่จุดเริ่มต้นของพรอมต์ PowerShell ของคุณ ([hq-srv01.a-d.site]) ด้วยวิธีนี้ คุณจะทราบได้ว่าคุณกำลังทำงานในเซสชันเชลล์แบบโลคัลหรือรีโมต
เอาต์พุตของคำสั่งทั้งหมดที่รันจากระยะไกลจะแสดงในคอนโซลภายในเครื่องของคุณ คุณสามารถเรียกใช้
hostnameคำสั่งและตรวจสอบให้แน่ใจว่าคุณใช้งานบนคอมพิวเตอร์ระยะไกล
คุณสามารถเรียกใช้คำสั่งใดก็ได้ในพรอมต์คำสั่งแบบโต้ตอบนี้ (ตามสิทธิ์ของคุณ)
ตัวอย่างเช่น แสดงการตั้งค่าเครือข่าย Windows โดยใช้ PowerShell:
Get-NetIPConfigurationคุณสามารถเปลี่ยนการตั้งค่า DNS บนคอมพิวเตอร์ระยะไกลได้:
Set-DNSClientServerAddress -InterfaceIndex 6 -ServerAddresses 192.168.13.4, 192.168.100.4
หากต้องการออกจากเซสชันรีโมตเชลล์แบบโต้ตอบ ให้เรียกใช้
Exit-PSSessionหรือ
exit. พรอมต์ของ PS จะกลายเป็นปกติและคุณจะกลับไปที่คอนโซล PowerShell ในเครื่องของคุณ:
ก่อนหน้านี้ ผู้ดูแลระบบใช้เครื่องมือ PsExec เป็นหลักเพื่อเรียกใช้พรอมต์คำสั่งแบบโต้ตอบบนคอมพิวเตอร์ Windows ระยะไกล อย่างไรก็ตาม เมื่อ Enter-PSSession ปรากฏขึ้น พวกเขาไม่จำเป็นต้องใช้เครื่องมือภายนอกอีกต่อไป
ใน Windows Server 2016/2019/2022 PowerShell Remoting จะเปิดใช้งานตามค่าเริ่มต้น (คุณสามารถดูได้ใน Server Manager -> Local Server -> Remote Management=Enabled)
Get-PSSessionConfigurationคำสั่งนี้ยังใช้เพื่อรับรายชื่อผู้ใช้และกลุ่มที่ได้รับอนุญาตให้เชื่อมต่อผ่าน WinRM หากต้องการใช้ PSRemoting บัญชีผู้ใช้ต้องเป็นสมาชิกของกลุ่ม ผู้ดูแลระบบ หรือ ผู้ใช้การจัดการระยะไกล คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับวิธีเปิดใช้งาน WinRM PowerShell Remoting สำหรับผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบ
คุณสามารถทดสอบว่าคุณสามารถเชื่อมต่อกับคอมพิวเตอร์ของคุณภายในเครื่องผ่าน PowerShell Remoting หรือไม่:
Test-WSMan -ComputerName localhost
หากคำสั่งส่งคืนเวอร์ชัน WSMan schema การเชื่อมต่อระยะไกลกับคอมพิวเตอร์โดยใช้ PS Remoting จะได้รับอนุญาต
หาก PowerShell Remoting ถูกปิดใช้งานหรือไม่ได้กำหนดค่า ข้อผิดพลาดต่อไปนี้จะปรากฏขึ้น:
Test-WSMan : <f:WSManFaultxmlns:f="http://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".หากต้องการเปิดใช้งาน PowerShell Remoting ให้รันคำสั่งนี้:
Enable-PSRemoting -Forceคำสั่งนี้:
เปิดใช้งานบริการ WinRM และตั้งค่าประเภทการเริ่มต้นเป็นอัตโนมัติ
สร้างจุดเชื่อมต่อบนพอร์ต WinRM เริ่มต้น (TCP/5985 สำหรับการรับส่งข้อมูล HTTP)
เพิ่มข้อยกเว้นสำหรับการจัดการ WS ให้กับไฟร์วอลล์ Windows (หากคุณกำหนดค่า PSRemoting ด้วยตนเอง ให้เพิ่มกฎไฟร์วอลล์โดยใช้ PowerShell หรือด้วย GPO)
อนุญาตเซสชัน PowerShell ระยะไกล
เริ่มบริการ WinRM ใหม่
ตรวจสอบให้แน่ใจว่าบริการ WinRM กำลังทำงานอยู่และตั้งค่าให้เริ่มโดยอัตโนมัติ:
Get-Service WinRM | Select MachineName,Name,Status, StartTypeคำสั่ง Enable-PSRemoting ใช้ได้กับโดเมนและโปรไฟล์เครือข่ายส่วนตัวของ Windows เท่านั้น หากคุณต้องการเปิดใช้งาน PSRemoting บนคอมพิวเตอร์ในเครือข่ายสาธารณะ ให้เปลี่ยนตำแหน่งเครือข่ายจากสาธารณะเป็นส่วนตัว หรือใช้คำสั่งด้านล่าง:
Enable-PSRemoting -SkipNetworkProfileCheck -Forceในโดเมน Active Directory วิธีที่ง่ายที่สุดในการกำหนดค่า Windows Remote Management (PSRemoting) จากส่วนกลางบนเซิร์ฟเวอร์และคอมพิวเตอร์คือผ่าน Group Policy
PowerShell เวอร์ชันสมัยใหม่ (v6 หรือ v7) รองรับโปรโตคอล Secure Shell (SSH) เพื่อเชื่อมต่อกับคอมพิวเตอร์ระยะไกลผ่าน PowerShell Remoting ต้องมีจุดเชื่อมต่อ SSH บนคอมพิวเตอร์ระยะไกล (จะเปิดใช้งาน OpenSSH Server ในตัวบน Windows 10 ได้อย่างไร) คุณสามารถเริ่มเซสชัน PSRemoting แบบโต้ตอบผ่าน SSH โดยใช้คำสั่งนี้:
Enter-PSSession -HostName maxbak@hq-srv01.a-d.siteหรือรับรองความถูกต้องผ่าน SSH โดยใช้คีย์ RSA:
Enter-PSSession -HostName maxbak@hq-srv01.a-d.site:22 -KeyFilePath c:\PS\max_rsa_keyคุณสามารถใช้ Enter-PSSession ร่วมกับ PSSession ใหม่:
$s = New-PSSession -ComputerName hq-srv01.a-d.site
Enter-PSSession -Session $sEnter-PSSession รองรับวิธีการตรวจสอบความถูกต้องหลายวิธี คุณสามารถตั้งค่าที่คุณต้องการโดยใช้พารามิเตอร์ -Authentication รองรับวิธีการตรวจสอบสิทธิ์ Basic, Digest, Kerberos, CredSSP, NegotiateWithImplicitCredential, Negotiate Challenge
ในตัวอย่างด้านบน เราแสดงวิธีสร้างการเชื่อมต่อ Enter-PSSession แบบโต้ตอบระหว่างคอมพิวเตอร์ในโดเมน Windows เดียวกัน (การระบุ 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.หากต้องการเชื่อมต่อกับคอมพิวเตอร์ระยะไกลโดยใช้ที่อยู่ IP คุณสามารถเพิ่มโฮสต์ลงในรายการโฮสต์ที่เชื่อถือได้ (Trusted Hosts) หรือใช้ SSL สำหรับ WinRM (มีความปลอดภัยมากกว่า)
หากต้องการเพิ่มที่อยู่ IP ให้กับโฮสต์ที่เชื่อถือได้ ให้รันคำสั่งนี้:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value 192.168.13.5คุณสามารถเพิ่มโฮสต์ที่เชื่อถือได้โดยใช้มาสก์ตัวแทน:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value *.a-d.siteในการแสดงรายชื่อโฮสต์ที่เชื่อถือได้:
Get-Item WSMan:\localhost\Client\TrustedHostsในทำนองเดียวกัน คุณสามารถเพิ่มโฮสต์ของคุณไปยังรายการโฮสต์ที่เชื่อถือได้บนคอมพิวเตอร์ระยะไกล
เริ่มบริการใหม่:
Restart-Service WinRMหากต้องการเชื่อมต่อกับคอมพิวเตอร์ระยะไกลโดยใช้ที่อยู่ IP ให้เรียกใช้คำสั่งด้านล่าง:
Enter-PSSession -ComputerName 192.168.13.5 -Credential (Get-Credential -UserName a-d\maxbak)นี้
Enter-PSSessionและ
New-PSSessioncmdlets สร้างเซสชันระยะไกลแบบหนึ่งต่อหนึ่งแบบถาวรและส่วนใหญ่จะใช้ในสถานการณ์แบบโต้ตอบ หากคุณต้องการเรียกใช้สคริปต์หรืองานโดยอัตโนมัติ หรือทำบางอย่างบนคอมพิวเตอร์ระยะไกลหลายเครื่องพร้อมกัน ให้ใช้คำสั่ง Invoke-Command







