PowerShell ระยะไกล | ขั้นตอนในการเชื่อมต่อระบบระยะไกลใน PowerShell
ข้อมูลเบื้องต้นเกี่ยวกับ PowerShell ระยะไกล
PowerShell ไม่เพียงแต่ช่วยให้ผู้ดูแลระบบเรียกใช้คำสั่งบนระบบภายในหรือเซิร์ฟเวอร์เพื่อจัดการสภาพแวดล้อม แต่ยังช่วยให้ผู้ใช้เชื่อมต่อกับเซิร์ฟเวอร์หรือเครื่องระยะไกลได้อีกด้วย จุดแข็งหลักประการหนึ่งของ PowerShell อยู่ที่ความสามารถในการประมวลผลระยะไกลโดยใช้เทคโนโลยีต่างๆ ระยะไกลของ PowerShell ช่วยให้ผู้ใช้สามารถรัน PowerShell cmdlets หรือรันสคริปต์หรือดำเนินการอื่นใดบนระบบ windows ใด ๆ โดยใช้การเชื่อมต่อระยะไกล แกนหลักของ PowerShell รองรับและใช้เทคโนโลยี เช่น Windows Management Instrumentation(WMI), Secure Shell(SSH) หรือ WS- Management เพื่อดำเนินงานในระบบระยะไกล บทความนี้จะกล่าวถึงรายละเอียดเกี่ยวกับการใช้ PowerShell เพื่อดำเนินการคำสั่งในระบบระยะไกล และวิธีการต่างๆ ในการสร้างการเชื่อมต่อกับคอมพิวเตอร์ระยะไกล
ขั้นตอนที่เกี่ยวข้องกับการเชื่อมต่อกับระบบระยะไกล
ขั้นตอนแรกที่เกี่ยวข้องในการเชื่อมต่อกับระบบระยะไกลคือการเปิดใช้งานสิ่งอำนวยความสะดวก PowerShell Remote บนเครื่องเป้าหมาย การดำเนินการข้างต้นสามารถทำได้โดยการเปิด Windows PowerShell ในโหมดผู้ดูแลระบบและเรียกใช้ cmdlet ต่อไปนี้
เปิดใช้งาน-PSRemoting -Force
cmdlet ข้างต้นเริ่มบริการ WinRM ซึ่งจะอนุญาตการเชื่อมต่อขาเข้ากับระบบและสร้างกฎไฟร์วอลล์เพื่อให้บรรลุเป้าหมายดังกล่าว หากคุณไม่ต้องการได้รับพร้อมท์สำหรับแต่ละขั้นตอน ให้รัน cmdlet ด้วยพารามิเตอร์ force
ขั้นตอนข้างต้นเพียงอย่างเดียวเป็นสิ่งจำเป็นหากเครื่องต้นทางและเครื่องเป้าหมายอยู่ในโดเมนเดียวกัน
ในกรณีที่ระบบไม่ได้เชื่อมต่อกับโดเมนเดียวกัน จะต้องดำเนินการเพิ่มเติมอีกสองสามขั้นตอน ก่อนที่จะเปิดใช้งาน Remoting บนเครื่องที่จะเชื่อมต่อต้นทาง
เพื่อให้ฟีเจอร์ระยะไกลของ PowerShell ทำงานได้ ต้องแน่ใจว่าเครือข่ายนั้นต้องเป็นเครือข่ายส่วนตัวและไม่ใช่เครือข่ายสาธารณะ
จากนั้นจะต้องสร้างความไว้วางใจระหว่างคอมพิวเตอร์ (ต้นทางและปลายทาง) โดยใช้การตั้งค่าโฮสต์ที่เชื่อถือได้บนคอมพิวเตอร์
ขั้นตอนข้างต้นสามารถทำได้โดยใช้ cmdlet ต่อไปนี้
Set-Item wsman:\localhost\client\trustedhostsถัดจากโฮสต์ที่เชื่อถือได้ เราควรระบุที่อยู่ IP ของคอมพิวเตอร์ที่ต้องระบุการเชื่อมต่อโดยคั่นด้วยเครื่องหมายจุลภาค หากคุณต้องการอนุญาตให้คอมพิวเตอร์ทุกเครื่องเชื่อมต่อได้ คุณควรใช้อักขระไวด์การ์ด “* ” เมื่อเรียกใช้ cmdlet ข้างต้นแล้ว จะต้องเริ่มบริการ WinRM ใหม่เพื่อให้การตั้งค่ามีผล ซึ่งสามารถทำได้โดยใช้ cmdlet ต่อไปนี้
เริ่มบริการ WinRM ใหม่
- cmdelts ทั้งสองต้องทำงานบนเครื่องต้นทางและเป้าหมายทั้งหมด
- เมื่อการกำหนดค่าเสร็จสิ้น สามารถตรวจสอบการเชื่อมต่อกับคอมพิวเตอร์ระยะไกลได้โดยการเรียกใช้ cmdlet ด้านล่าง:
Test-WsMan <RemoteCOMPUTERName>- ระบุชื่อคอมพิวเตอร์ที่จะต้องสร้างการเชื่อมต่อใน cmdlet ข้างต้น
- หากการเชื่อมต่อสำเร็จ สถานะของบริการ WiRM ของระบบเป้าหมายจะถูกส่งกลับ
มี cmdlet ไม่กี่ตัวที่สามารถดำเนินการบนคอมพิวเตอร์ระยะไกลโดยไม่ต้องเปิดใช้งานการกำหนดค่าระยะไกล เนื่องจาก cmdlet เหล่านั้นมีชื่อคอมพิวเตอร์เป็นพารามิเตอร์ cmdlet ประเภทเหล่านี้มีโปรโตคอลการสื่อสารบางอย่างและทำงานได้กับเครื่อง Windows ทั้งหมด
ต่อไปนี้เป็น cmdlets บางส่วนของประเภทที่กล่าวถึง
- Restart-Computer
- Get-WmiObject
- Get-WinEvent
- Test-Connection
หากต้องการค้นหา cmdlet ดังกล่าวในเซสชันของเรา คุณสามารถใช้ cmdlet ต่อไปนี้ได้
รหัส:
Get-Command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"}เอาต์พุต:
กำลังทดสอบการเชื่อมต่อ
เพื่อทดสอบสถานะของการกำหนดค่าระยะไกล เราสามารถลองเชื่อมต่อกับคอมพิวเตอร์ระยะไกลโดยใช้ cmdlet ต่อไปนี้ สามารถใช้ test-was man cmdlet เพื่อตรวจสอบว่าบริการ WinRM ทำงานบนเครื่องเป้าหมายหรือไม่ หากเปิดใช้งานบริการ ข้อความแสดงความสำเร็จจะปรากฏขึ้นพร้อมกับรายละเอียดเครื่องเป้าหมาย มิฉะนั้น ข้อความแสดงข้อผิดพลาดจะถูกส่งออกไป cmdlet สามารถใช้กับชื่อหรือที่อยู่ IP ของระบบเป้าหมายได้ เพื่อทดสอบสถานะของบริการ WinRM ใน Test-WSMan ในเครื่องสามารถใช้ได้
ทดสอบ WSMan 10.20.20.22
ทดสอบ WSMan
การเชื่อมต่อและการสิ้นสุดเซสชัน
หากต้องการเริ่มเซสชันด้วยคอมพิวเตอร์ระยะไกล จำเป็นต้องสร้างเซสชัน เมื่อสร้างเซสชันแล้ว ชื่อที่แสดงของพรอมต์คำสั่งจะเปลี่ยนเป็นชื่อที่แสดงของเครื่องที่สร้างเซสชันไว้ หลังจากนั้นคำสั่งที่ทำงานบนเครื่องจะถูกดำเนินการบนเครื่องระยะไกลและผลลัพธ์จะแสดงในคอมพิวเตอร์เฉพาะที่
เข้าสู่ PSSession TestComputer
หากต้องการสิ้นสุดเซสชัน ให้ใช้ cmdlet ด้านล่าง
ออกจาก-PSSession
การรันคำสั่งบนคอมพิวเตอร์ระยะไกล
ในบางกรณี อาจจำเป็นต้องรันคำสั่งเดียวกันบนระบบรีโมตหลายระบบ มันจะน่าเบื่อที่จะสร้างเซสชันสำหรับแต่ละคนและดำเนินการเหล่านั้น ในกรณีนั้น สามารถใช้ cmdlet คำสั่งเรียกใช้ได้ cmdlet นี้สามารถรับชื่อคอมพิวเตอร์หลายเครื่องหรือที่อยู่ IP เป็นพารามิเตอร์อินพุตและดำเนินการคำสั่งเหล่านั้นและแสดงผลลัพธ์
รหัส:
Invoke-Command -ComputerName testserver1, testserver2 -ScriptBlock {Get-UICulture}เอาต์พุต:
กำลังเรียกใช้สคริปต์
นอกจากนี้ยังสามารถรันสคริปต์บนคอมพิวเตอร์ระยะไกลจากระบบภายในเครื่องได้อีกด้วย สามารถใช้คำสั่ง inake-command เดียวกันเพื่อดำเนินการเช่นเดียวกันได้ สคริปต์ควรอยู่บนระบบโลคัลที่คำสั่งกำลังรันอยู่หรืออยู่บนไดรฟ์เครือข่ายก็ได้
เรียกใช้คำสั่ง - ชื่อคอมพิวเตอร์ testServer01, testServer02 - FilePath c:\Scripts\test.ps1
ในคำสั่งข้างต้น สคริปต์จะทำงานบนเซิร์ฟเวอร์ทั้งสองที่กล่าวถึง
หากอ็อบเจ็กต์เซสชันถูกจัดเก็บไว้ในตัวแปร คำสั่งใดๆ ก็สามารถรันบนอ็อบเจ็กต์เหล่านั้นได้ เนื่องจากเซสชันถูกบันทึกไว้ ดังนั้นอินพุตของคำสั่งหนึ่งจึงสามารถส่งผ่านไปยังคำสั่งอื่นได้ ในกรณีนี้ เซสชันไม่ได้อยู่บนเครื่องคอมพิวเตอร์
$test=New-PSSession -ComputerName testServer01, testServer02
Invoke-Command -Session $test {$test1 = Get-HotFix}สามารถสร้างระยะไกลขั้นสูงได้โดยใช้ WSMan Provider
รหัส:
Write-Host "Welcome to the example of remoting in PowerShell"
Write-Host "The following cmdlet will be executed on two servers"
Invoke-Command -ComputerName testserver1,testeserver2 -ScriptBlock {Write-Host "Local system name is" $localhost}
Write-Host "Executing a script on remote server"
Invoke-Command -ComputerName Server01, Server02 -FilePath c:\Scripts\DiskCollect.ps1
Write-Host "script executed successfully"
Write-Host "Creating session example"
$cr=Get-Credential
$se = New-PSSession -Credential $cr -ComputerName testserver1,testserver2
Enter-PSSession $se
Write-Host "Session created"
Exit-PSSession
Remove-PSSession $sess
write-host "Session is closed"เอาต์พุต:
บทสรุป
ดังนั้นบทความนี้จึงกล่าวถึงรายละเอียดเกี่ยวกับการควบคุมระยะไกลใน PowerShell โดยจะอธิบายวิธีการสร้างการเชื่อมต่อ ซึ่งเป็นข้อกำหนดเบื้องต้นที่ต้องทำก่อนเชื่อมต่อกับคอมพิวเตอร์ระยะไกล นอกจากนี้ยังอธิบายพร้อมตัวอย่างต่างๆ วิธีการรันคำสั่งบนระบบระยะไกล วิธีรันสคริปต์ ฯลฯ หากต้องการเรียนรู้โดยละเอียดเพิ่มเติม ขอแนะนำให้ทำงานกับสคริปต์ตัวอย่าง





