ค้นหาเว็บไซต์

Enter-PSSession: เรียกใช้คำสั่งระยะไกลใน Interactive Shell


cmdlet Enter-PSSession ช่วยให้คุณสร้างเซสชัน PowerShell แบบโต้ตอบถาวรด้วยคอมพิวเตอร์ระยะไกล คำสั่งทั้งหมดที่คุณป้อนในพรอมต์คำสั่งจะดำเนินการบนคอมพิวเตอร์ระยะไกล ในบทความนี้ เราจะอธิบายคุณสมบัติหลักของ Enter-PSSession และวิธีการใช้ในการจัดการคอมพิวเตอร์ที่ใช้ Windows 10/11 และ Windows Server 2022/2019/2016 จากระยะไกล

นี้

Enter-PSSession

cmdlet ขับเคลื่อนโดยสแต็ก 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 $s

Enter-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-PSSession

cmdlets สร้างเซสชันระยะไกลแบบหนึ่งต่อหนึ่งแบบถาวรและส่วนใหญ่จะใช้ในสถานการณ์แบบโต้ตอบ หากคุณต้องการเรียกใช้สคริปต์หรืองานโดยอัตโนมัติ หรือทำบางอย่างบนคอมพิวเตอร์ระยะไกลหลายเครื่องพร้อมกัน ให้ใช้คำสั่ง Invoke-Command

บทความที่เกี่ยวข้อง