รับ PSSession (Microsoft.PowerShell.Core)
รับ PSSession
- โมดูล :
- Microsoft.PowerShell.Core
รับผลลัพธ์ของคำสั่งในเซสชันที่ไม่ได้เชื่อมต่อ
ไวยากรณ์
Receive-PSSession
[-Session] <PSSession>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]Receive-PSSession
[-Id] <Int32>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]Receive-PSSession
[-ComputerName] <String>
[-ApplicationName <String>]
[-ConfigurationName <String>]
-Name <String>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-Port <Int32>]
[-UseSSL]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]Receive-PSSession
[-ComputerName] <String>
[-ApplicationName <String>]
[-ConfigurationName <String>]
-InstanceId <Guid>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-Port <Int32>]
[-UseSSL]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]Receive-PSSession
[-ConfigurationName <String>]
[-ConnectionUri] <Uri>
[-AllowRedirection]
-Name <String>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]Receive-PSSession
[-ConfigurationName <String>]
[-ConnectionUri] <Uri>
[-AllowRedirection]
-InstanceId <Guid>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]Receive-PSSession
-InstanceId <Guid>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]Receive-PSSession
-Name <String>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]คำอธิบาย
cmdlet นี้ใช้ได้เฉพาะบนแพลตฟอร์ม Windows เท่านั้น
Receive-PSSession cmdlet รับผลลัพธ์ของคำสั่งที่ทำงานอยู่ในเซสชัน PowerShell (PSSession) ที่ถูกตัดการเชื่อมต่อ หากเซสชันเชื่อมต่ออยู่ในขณะนี้ Receive-PSSession จะได้รับผลลัพธ์ของคำสั่งที่ทำงานอยู่เมื่อเซสชันถูกตัดการเชื่อมต่อ หากเซสชันยังคงยกเลิกการเชื่อมต่อ Receive-PSSession จะเชื่อมต่อกับเซสชัน ดำเนินการคำสั่งที่ถูกระงับต่อไป และรับผลลัพธ์ของคำสั่งที่ทำงานในเซสชัน
cmdlet นี้ถูกนำมาใช้ใน PowerShell 3.0
คุณสามารถใช้ Receive-PSSession เพิ่มเติมจากหรือแทนคำสั่ง Connect-PSSession ได้ Receive-PSSession สามารถเชื่อมต่อกับเซสชันใด ๆ ที่ไม่ได้เชื่อมต่อหรือเชื่อมต่อใหม่ซึ่งเริ่มต้นในเซสชันอื่นหรือบนคอมพิวเตอร์เครื่องอื่น
Receive-PSSession ใช้งานได้กับ PSSessions ที่ถูกตัดการเชื่อมต่อโดยเจตนาโดยใช้ Disconnect-PSSession cmdlet หรือ Intake-Command < พารามิเตอร์InDisconnectedSession หรือตัดการเชื่อมต่อโดยไม่ได้ตั้งใจเนื่องจากการหยุดชะงักของเครือข่าย
หากคุณใช้ Receive-PSSession cmdlet เพื่อเชื่อมต่อกับเซสชันที่ไม่มีคำสั่งใดทำงานหรือถูกระงับ Receive-PSSession จะเชื่อมต่อกับเซสชัน แต่ไม่มีผลลัพธ์หรือข้อผิดพลาดกลับมา .
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคุณลักษณะ Disconnected Sessions โปรดดู about_Remote_Disconnected_Sessions
ตัวอย่างบางส่วนใช้การสลับเพื่อลดความยาวของบรรทัดและปรับปรุงให้อ่านง่าย สำหรับข้อมูลเพิ่มเติม โปรดดูที่ about_Splatting
ตัวอย่าง
ตัวอย่างที่ 1: เชื่อมต่อกับ PSSession
ตัวอย่างนี้เชื่อมต่อกับเซสชันบนคอมพิวเตอร์ระยะไกลและรับผลลัพธ์ของคำสั่งที่ทำงานในเซสชัน
Receive-PSSession -ComputerName Server01 -Name ITTaskReceive-PSSession ระบุคอมพิวเตอร์ระยะไกลด้วยพารามิเตอร์ ComputerName พารามิเตอร์ ชื่อ ระบุเซสชัน ITTask บนคอมพิวเตอร์ Server01 ตัวอย่างได้รับผลลัพธ์ของคำสั่งที่ทำงานในเซสชัน ITTask
เนื่องจากคำสั่งไม่ได้ใช้พารามิเตอร์ OutTarget ผลลัพธ์จึงปรากฏบนบรรทัดคำสั่ง
ตัวอย่างที่ 2: รับผลลัพธ์ของคำสั่งทั้งหมดในเซสชันที่ไม่ได้เชื่อมต่อ
ตัวอย่างนี้รับผลลัพธ์ของคำสั่งทั้งหมดที่รันในเซสชันที่ไม่ได้เชื่อมต่อทั้งหมดบนคอมพิวเตอร์ระยะไกลสองเครื่อง
หากเซสชันใดไม่ได้ถูกตัดการเชื่อมต่อหรือไม่ได้เรียกใช้คำสั่ง Receive-PSSession จะไม่เชื่อมต่อกับเซสชันและไม่ส่งคืนเอาต์พุตหรือข้อผิดพลาดใดๆ
Get-PSSession -ComputerName Server01, Server02 | Receive-PSSessionGet-PSSession ใช้พารามิเตอร์ ComputerName เพื่อระบุคอมพิวเตอร์ระยะไกล วัตถุจะถูกส่งไปตามไปป์ไลน์ไปยัง Receive-PSSession
ตัวอย่างที่ 3: รับผลลัพธ์ของสคริปต์ที่ทำงานในเซสชัน
ตัวอย่างนี้ใช้ cmdlet Receive-PSSession เพื่อรับผลลัพธ์ของสคริปต์ที่ทำงานอยู่ในเซสชันของคอมพิวเตอร์ระยะไกล
$parms = @{
ComputerName = "Server01"
Name = "ITTask"
OutTarget = "Job"
JobName = "ITTaskJob01"
Credential = "Domain01\Admin01"
}
Receive-PSSession @parms
Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 ITTaskJob01 Running True Server01คำสั่งใช้พารามิเตอร์ ComputerName และ Name เพื่อระบุเซสชันที่ไม่ได้เชื่อมต่อ โดยจะใช้พารามิเตอร์ OutTarget ที่มีค่า Job เพื่อกำหนดให้ Receive-PSSession ให้ส่งคืนผลลัพธ์เป็นงาน พารามิเตอร์ JobName ระบุชื่อสำหรับงานในเซสชันที่เชื่อมต่อใหม่ พารามิเตอร์ ข้อมูลประจำตัว เรียกใช้คำสั่ง Receive-PSSession โดยใช้สิทธิ์ของผู้ดูแลระบบโดเมน
ผลลัพธ์แสดงให้เห็นว่า Receive-PSSession ส่งคืนผลลัพธ์เป็นงานในเซสชันปัจจุบัน หากต้องการรับผลลัพธ์งาน ให้ใช้คำสั่ง Receive-Job
ตัวอย่างที่ 4: รับผลลัพธ์หลังจากเครือข่ายขัดข้อง
ตัวอย่างนี้ใช้ cmdlet Receive-PSSession เพื่อรับผลลัพธ์ของงานหลังจากที่เครือข่ายขัดข้องขัดขวางการเชื่อมต่อเซสชัน PowerShell จะพยายามเชื่อมต่อเซสชันใหม่โดยอัตโนมัติหนึ่งครั้งต่อวินาทีเป็นเวลาสี่นาทีถัดไป และละทิ้งความพยายามหากความพยายามทั้งหมดในช่วงเวลาสี่นาทีล้มเหลว
PS> $s = New-PSSession -ComputerName Server01 -Name AD -ConfigurationName ADEndpoint
PS> $s
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
8 AD Server01 Opened ADEndpoint Available
PS> Invoke-Command -Session $s -FilePath \\Server12\Scripts\SharedScripts\New-ADResolve.ps1
Running "New-ADResolve.ps1"
# Network outage
# Restart local computer
# Network access is not re-established within 4 minutes
PS> Get-PSSession -ComputerName Server01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backup Server01 Disconnected Microsoft.PowerShell None
8 AD Server01 Disconnected ADEndpoint None
PS> Receive-PSSession -ComputerName Server01 -Name AD -OutTarget Job -JobName AD
Job Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 ADJob Running True Server01
PS> Get-PSSession -ComputerName Server01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backup Server01 Disconnected Microsoft.PowerShell Busy
8 AD Server01 Opened ADEndpoint AvailableNew-PSSession cmdlet สร้างเซสชันบนคอมพิวเตอร์ Server01 และบันทึกเซสชันในตัวแปร $s ตัวแปร $s แสดงว่า สถานะ เปิดอยู่ และ ความพร้อมใช้งาน พร้อมใช้งาน ค่าเหล่านี้บ่งชี้ว่าคุณเชื่อมต่อกับเซสชันและสามารถเรียกใช้คำสั่งในเซสชันได้
Invoke-Command cmdlet เรียกใช้สคริปต์ในเซสชันในตัวแปร $s สคริปต์เริ่มทำงานและส่งคืนข้อมูล แต่เครือข่ายขัดข้องขัดจังหวะเซสชัน ผู้ใช้ต้องออกจากเซสชันและรีสตาร์ทเครื่องคอมพิวเตอร์
เมื่อคอมพิวเตอร์รีสตาร์ท ผู้ใช้เริ่ม PowerShell และเรียกใช้คำสั่ง Get-PSSession เพื่อรับเซสชันบนคอมพิวเตอร์ Server01 ผลลัพธ์แสดงว่าเซสชัน AD ยังคงมีอยู่ในคอมพิวเตอร์ Server01 สถานะ ระบุว่าเซสชัน AD ถูกตัดการเชื่อมต่อ ค่าความพร้อมใช้งานเป็นไม่มี บ่งชี้ว่าเซสชันไม่ได้เชื่อมต่อกับเซสชันไคลเอ็นต์ใดๆ
cmdlet Receive-PSSession เชื่อมต่อใหม่กับเซสชัน AD และรับผลลัพธ์ของสคริปต์ที่ทำงานในเซสชัน คำสั่งใช้พารามิเตอร์ OutTarget เพื่อขอผลลัพธ์ในงานชื่อ ADJob คำสั่งส่งคืนอ็อบเจ็กต์งานและเอาต์พุตบ่งชี้ว่าสคริปต์ยังคงทำงานอยู่
Get-PSSession cmdlet ใช้เพื่อตรวจสอบสถานะของงาน ผลลัพธ์ยืนยันว่า cmdlet Receive-PSSession เชื่อมต่อกับเซสชัน AD อีกครั้ง ซึ่งขณะนี้เปิดอยู่และพร้อมใช้งานสำหรับคำสั่งต่างๆ และสคริปต์กลับมาดำเนินการต่อและกำลังได้รับผลลัพธ์ของสคริปต์
ตัวอย่างที่ 5: เชื่อมต่อใหม่กับเซสชันที่ไม่ได้เชื่อมต่อ
ตัวอย่างนี้ใช้ cmdlet Receive-PSSession เพื่อเชื่อมต่อกับเซสชันที่ตั้งใจตัดการเชื่อมต่อ และรับผลลัพธ์ของงานที่กำลังทำงานอยู่ในเซสชัน
PS> $parms = @{
InDisconnectedSession = $True
ComputerName = "Server01", "Server02", "Server30"
FilePath = "\\Server12\Scripts\SharedScripts\Get-BugStatus.ps1"
Name = "BugStatus"
SessionOption = @{IdleTimeout = 86400000}
ConfigurationName = "ITTasks"
}
PS> Invoke-Command @parms
PS> Exit
PS> $s = Get-PSSession -ComputerName Server01, Server02, Server30 -Name BugStatus
PS> $s
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Disconnected ITTasks None
8 ITTask Server02 Disconnected ITTasks None
2 ITTask Server30 Disconnected ITTasks None
PS> $Results = Receive-PSSession -Session $s
PS> $s
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Opened ITTasks Available
8 ITTask Server02 Opened ITTasks Available
2 ITTask Server30 Opened ITTasks Available
PS> $Results
Bug Report - Domain 01
----------------------
ComputerName BugCount LastUpdated
-------------- --------- ------------
Server01 121 Friday, December 30, 2011 5:03:34 PM
Invoke-Command cmdlet เรียกใช้สคริปต์บนคอมพิวเตอร์ระยะไกลสามเครื่อง เนื่องจากสคริปต์รวบรวมและสรุปข้อมูลจากหลายฐานข้อมูล จึงมักจะใช้เวลานานกว่าสคริปต์จึงจะเสร็จสิ้น คำสั่งใช้พารามิเตอร์ InDisconnectedSession ที่เริ่มสคริปต์แล้วยกเลิกการเชื่อมต่อเซสชันทันที พารามิเตอร์ SessionOption จะขยายค่า IdleTimeout ของเซสชันที่ไม่ได้เชื่อมต่อ เซสชันที่ถูกตัดการเชื่อมต่อจะถือว่าไม่ได้ใช้งานนับตั้งแต่ที่ถูกตัดการเชื่อมต่อ สิ่งสำคัญคือต้องตั้งค่าการหมดเวลาไม่ได้ใช้งานให้นานเพียงพอเพื่อให้คำสั่งสามารถดำเนินการได้เสร็จสิ้น และคุณสามารถเชื่อมต่อกับเซสชันได้อีกครั้ง คุณสามารถตั้งค่า IdleTimeout ได้เฉพาะเมื่อคุณสร้าง PSSession และเปลี่ยนได้เฉพาะเมื่อคุณยกเลิกการเชื่อมต่อเท่านั้น คุณไม่สามารถเปลี่ยนค่า IdleTimeout เมื่อคุณเชื่อมต่อกับ PSSession หรือรับผลลัพธ์ หลังจากรันคำสั่ง ผู้ใช้ออกจาก PowerShell และปิดคอมพิวเตอร์
ในวันถัดไป ผู้ใช้กลับมาใช้งาน Windows ต่อ เริ่ม PowerShell และใช้ Get-PSSession เพื่อรับเซสชันที่สคริปต์กำลังทำงานอยู่ คำสั่งระบุเซสชันตามชื่อคอมพิวเตอร์ ชื่อเซสชัน และชื่อของการกำหนดค่าเซสชัน และบันทึกเซสชันในตัวแปร $s ค่าของตัวแปร $s จะปรากฏขึ้นและแสดงว่าเซสชันถูกตัดการเชื่อมต่อ แต่ไม่ยุ่ง
Receive-PSSession cmdlet เชื่อมต่อกับเซสชันในตัวแปร $s และรับผลลัพธ์ คำสั่งจะบันทึกผลลัพธ์ไว้ในตัวแปร $Results ตัวแปร $s จะปรากฏขึ้นและแสดงว่าเซสชันเชื่อมต่อและพร้อมใช้งานสำหรับคำสั่ง
สคริปต์ส่งผลให้ตัวแปร $Results แสดงในคอนโซล PowerShell หากผลลัพธ์ใดๆ ไม่คาดคิด ผู้ใช้สามารถเรียกใช้คำสั่งในเซสชันเพื่อตรวจสอบสาเหตุที่แท้จริงได้
ตัวอย่างที่ 6: การรันงานในเซสชันที่ไม่ได้เชื่อมต่อ
ตัวอย่างนี้แสดงสิ่งที่เกิดขึ้นกับงานที่กำลังทำงานอยู่ในเซสชันที่ไม่ได้เชื่อมต่อ
PS> $s = New-PSSession -ComputerName Server01 -Name Test
PS> $j = Invoke-Command -Session $s { 1..1500 | Foreach-Object {"Return $_"; sleep 30}} -AsJob
PS> $j
Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 Job1 Running True Server01
PS> $s | Disconnect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Test Server01 Disconnected Microsoft.PowerShell None
PS> $j
Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 Job1 Disconnected True Server01
PS> Receive-Job $j -Keep
Return 1
Return 2
PS> $s2 = Connect-PSSession -ComputerName Server01 -Name Test
PS> $j2 = Receive-PSSession -ComputerName Server01 -Name Test
PS> Receive-Job $j
Return 3
Return 4cmdlet New-PSSession สร้างเซสชันการทดสอบบนคอมพิวเตอร์ Server01 คำสั่งจะบันทึกเซสชันในตัวแปร $s
Invoke-Command cmdlet รันคำสั่งในเซสชันในตัวแปร $s คำสั่งใช้พารามิเตอร์ AsJob เพื่อรันคำสั่งเป็นงานและสร้างอ็อบเจ็กต์งานในเซสชันปัจจุบัน คำสั่งส่งคืนวัตถุงานที่บันทึกไว้ในตัวแปร $j ตัวแปร $j แสดงออบเจ็กต์งาน
วัตถุเซสชันในตัวแปร $s ถูกส่งไปตามไปป์ไลน์ไปยัง Disconnect-PSSession และเซสชันถูกตัดการเชื่อมต่อ
ตัวแปร $j จะแสดงขึ้นและแสดงผลของการยกเลิกการเชื่อมต่ออ็อบเจ็กต์งานในตัวแปร $j สถานะงานถูกตัดการเชื่อมต่อแล้ว
Receive-Job ถูกรันในงานในตัวแปร $j ผลลัพธ์แสดงว่างานเริ่มส่งคืนเอาต์พุตก่อนเซสชันและงานถูกตัดการเชื่อมต่อ
Connect-PSSession cmdlet ทำงานในเซสชันไคลเอ็นต์เดียวกัน คำสั่งเชื่อมต่อกับเซสชันการทดสอบบนคอมพิวเตอร์ Server01 อีกครั้ง และบันทึกเซสชันในตัวแปร $s2
cmdlet Receive-PSSession รับผลลัพธ์ของงานที่รันอยู่ในเซสชัน เนื่องจากคำสั่งถูกรันในเซสชันเดียวกัน Receive-PSSession จะส่งกลับผลลัพธ์เป็นงานตามค่าเริ่มต้น และนำวัตถุงานเดียวกันกลับมาใช้ใหม่ คำสั่งจะบันทึกงานไว้ในตัวแปร $j2 Receive-Job cmdlet รับผลลัพธ์ของงานในตัวแปร $j
พารามิเตอร์
-AllowRedirection
บ่งชี้ว่า cmdlet นี้อนุญาตให้เปลี่ยนเส้นทางการเชื่อมต่อนี้ไปยัง Uniform Resource Identifier (URI) สำรอง
เมื่อคุณใช้พารามิเตอร์ ConnectionURI ปลายทางระยะไกลสามารถส่งคืนคำสั่งเพื่อเปลี่ยนเส้นทางไปยัง URI อื่นได้ ตามค่าเริ่มต้น PowerShell จะไม่เปลี่ยนเส้นทางการเชื่อมต่อ แต่คุณสามารถใช้พารามิเตอร์นี้เพื่อเปิดใช้งานการเปลี่ยนเส้นทางการเชื่อมต่อได้
คุณยังสามารถจำกัดจำนวนครั้งที่การเชื่อมต่อถูกเปลี่ยนเส้นทางโดยการเปลี่ยนค่าตัวเลือกเซสชัน MaximumConnectionRedirectionCount ใช้พารามิเตอร์ MaximumRedirection ของ cmdlet New-PSSessionOption หรือตั้งค่าคุณสมบัติ MaximumConnectionRedirectionCount ของตัวแปรการตั้งค่า $PSSessionOption ค่าเริ่มต้นคือ 5
- พิมพ์ :
SwitchParameter
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
False
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-ApplicationName
ระบุแอปพลิเคชัน cmdlet นี้เชื่อมต่อกับเซสชันที่ใช้แอปพลิเคชันที่ระบุเท่านั้น
ป้อนส่วนของชื่อแอปพลิเคชันของ URI การเชื่อมต่อ ตัวอย่างเช่น ใน URI การเชื่อมต่อต่อไปนี้ WSMan คือชื่อแอปพลิเคชัน: http://localhost:5985/WSMAN
ชื่อแอปพลิเคชันของเซสชันจะถูกจัดเก็บไว้ในคุณสมบัติ Runspace.ConnectionInfo.AppName ของเซสชัน
ค่าของพารามิเตอร์ใช้เพื่อเลือกและกรองเซสชัน จะไม่เปลี่ยนแอปพลิเคชันที่เซสชันใช้
- พิมพ์ :
String
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
True
- ยอมรับอักขระตัวแทน:
False
-Authentication
ระบุกลไกที่ใช้ในการตรวจสอบข้อมูลรับรองผู้ใช้ในคำสั่งเพื่อเชื่อมต่อกับเซสชันที่ไม่ได้เชื่อมต่ออีกครั้ง ค่าที่ยอมรับได้สำหรับพารามิเตอร์นี้คือ:
- ค่าเริ่มต้น
- ขั้นพื้นฐาน
- Credssp
- แยกแยะ
- เคอร์เบรอส
- ต่อรอง
- เจรจาต่อรองด้วยข้อมูลประจำตัวโดยนัย
ค่าเริ่มต้นคือค่าเริ่มต้น
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับค่าของพารามิเตอร์นี้ โปรดดูที่ การแจงนับ AuthenticationMechanism
คำเตือน
การตรวจสอบสิทธิ์ Credential Security Support Provider (CredSSP) ซึ่งข้อมูลประจำตัวผู้ใช้จะถูกส่งไปยังคอมพิวเตอร์ระยะไกลเพื่อตรวจสอบสิทธิ์ ได้รับการออกแบบมาสำหรับคำสั่งที่ต้องมีการตรวจสอบสิทธิ์บนทรัพยากรมากกว่าหนึ่งรายการ เช่น การเข้าถึงการแชร์เครือข่ายระยะไกล กลไกนี้เพิ่มความเสี่ยงด้านความปลอดภัยของการดำเนินการระยะไกล หากคอมพิวเตอร์ระยะไกลถูกบุกรุก ข้อมูลประจำตัวที่ถูกส่งผ่านไปจะสามารถใช้เพื่อควบคุมเซสชันเครือข่ายได้
- พิมพ์ :
AuthenticationMechanism
- ค่าที่ยอมรับ:
ค่าเริ่มต้น พื้นฐาน เจรจาต่อรอง NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
ค่าเริ่มต้น
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-CertificateThumbprint
ระบุใบรับรองคีย์สาธารณะดิจิทัล (X509) ของบัญชีผู้ใช้ที่มีสิทธิ์ในการเชื่อมต่อกับเซสชันที่ไม่ได้เชื่อมต่อ ป้อนรหัสประจำตัวใบรับรองของใบรับรอง
ใบรับรองใช้ในการตรวจสอบความถูกต้องตามใบรับรองไคลเอ็นต์ ใบรับรองสามารถแมปกับบัญชีผู้ใช้ภายในเครื่องเท่านั้น และใช้งานไม่ได้กับบัญชีโดเมน
หากต้องการรับรหัสประจำตัวของใบรับรอง ให้ใช้คำสั่ง Get-Item หรือ Get-ChildItem ในไดรฟ์ PowerShell Cert:
- พิมพ์ :
String
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-ComputerName
ระบุคอมพิวเตอร์ที่เก็บเซสชันที่ไม่ได้เชื่อมต่อไว้ เซสชันจะถูกจัดเก็บไว้ในคอมพิวเตอร์ที่อยู่ฝั่งเซิร์ฟเวอร์หรือรับการสิ้นสุดการเชื่อมต่อ ค่าเริ่มต้นคือเครื่องคอมพิวเตอร์
พิมพ์ชื่อ NetBIOS ที่อยู่ IP หรือชื่อโดเมนแบบเต็ม (FQDN) ของคอมพิวเตอร์เครื่องหนึ่ง ไม่อนุญาตให้ใช้อักขระตัวแทน หากต้องการระบุเครื่องคอมพิวเตอร์ ให้พิมพ์ชื่อคอมพิวเตอร์ จุด (.) $env:COMPUTERNAME หรือ localhost
- พิมพ์ :
String
- นามแฝง :
Cn
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
True
- ยอมรับอักขระตัวแทน:
False
-ConfigurationName
ระบุชื่อของการกำหนดค่าเซสชัน cmdlet นี้เชื่อมต่อกับเซสชันที่ใช้การกำหนดค่าเซสชันที่ระบุเท่านั้น
ป้อนชื่อการกำหนดค่าหรือ URI ทรัพยากรแบบเต็มสำหรับการกำหนดค่าเซสชัน หากคุณระบุเฉพาะชื่อการกำหนดค่า URI สคีมาต่อไปนี้จะถูกเติมไว้หน้า:
<รหัส>http://schemas.microsoft.com/powershell
ชื่อการกำหนดค่าของเซสชันจะถูกจัดเก็บไว้ในคุณสมบัติ ConfigurationName ของเซสชัน
ค่าของพารามิเตอร์ใช้เพื่อเลือกและกรองเซสชัน จะไม่เปลี่ยนการกำหนดค่าเซสชันที่เซสชันใช้
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าเซสชัน โปรดดู about_Session_Configurations
- พิมพ์ :
String
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
True
- ยอมรับอักขระตัวแทน:
False
-Confirm
แจ้งให้คุณยืนยันก่อนเรียกใช้ cmdlet
- พิมพ์ :
SwitchParameter
- นามแฝง :
cf
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
False
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-ConnectionUri
ระบุ URI ที่กำหนดจุดสิ้นสุดการเชื่อมต่อที่ใช้ในการเชื่อมต่อกับเซสชันที่ไม่ได้เชื่อมต่ออีกครั้ง
URI จะต้องมีคุณสมบัติครบถ้วน รูปแบบของสตริงจะเป็นดังนี้:
<Transport>://<ComputerName>:<Port>/<ApplicationName>ค่าเริ่มต้นจะเป็นดังนี้:
http://localhost:5985/WSMANหากคุณไม่ได้ระบุ URI การเชื่อมต่อ คุณสามารถใช้ UseSSL, ชื่อคอมพิวเตอร์, พอร์ต และ ApplicationName พารามิเตอร์เพื่อระบุค่า URI การเชื่อมต่อ
ค่าที่ถูกต้องสำหรับส่วน การขนส่ง ของ URI คือ HTTP และ HTTPS หากคุณระบุ URI การเชื่อมต่อด้วยเซ็กเมนต์การขนส่ง แต่ไม่ระบุพอร์ต เซสชันจะถูกสร้างขึ้นด้วยพอร์ตมาตรฐาน: 80 สำหรับ HTTP และ 443 สำหรับ HTTPS หากต้องการใช้พอร์ตเริ่มต้นสำหรับ PowerShell ระยะไกล ให้ระบุพอร์ต 5985 สำหรับ HTTP หรือ 5986 สำหรับ HTTPS
หากคอมพิวเตอร์ปลายทางเปลี่ยนเส้นทางการเชื่อมต่อไปยัง URI อื่น PowerShell จะป้องกันการเปลี่ยนเส้นทางเว้นแต่คุณจะใช้พารามิเตอร์ AllowRedirection ในคำสั่ง
- พิมพ์ :
ยูริ
- นามแฝง :
URI, CU
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
http://localhost:5985/WSMAN
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
True
- ยอมรับอักขระตัวแทน:
False
-Credential
ระบุบัญชีผู้ใช้ที่มีสิทธิ์ในการเชื่อมต่อกับเซสชันที่ยกเลิกการเชื่อมต่อ ค่าเริ่มต้นคือผู้ใช้ปัจจุบัน
พิมพ์ชื่อผู้ใช้ เช่น User01 หรือ Domain01\User01 หรือป้อนวัตถุ PSCredential ที่สร้างโดย Get-Credential รหัส> cmdlet. หากคุณพิมพ์ชื่อผู้ใช้ คุณจะได้รับแจ้งให้ป้อนรหัสผ่าน
ข้อมูลประจำตัวจะถูกจัดเก็บไว้ในวัตถุ PSCredential และรหัสผ่านจะถูกจัดเก็บเป็น SecureString
บันทึก
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการปกป้องข้อมูล SecureString โปรดดู SecureString มีความปลอดภัยเพียงใด
- พิมพ์ :
PSCredential
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
ผู้ใช้ปัจจุบัน
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-Id
ระบุ ID ของเซสชันที่ไม่ได้เชื่อมต่อ พารามิเตอร์ Id ใช้งานได้เฉพาะเมื่อเซสชันที่ยกเลิกการเชื่อมต่อเคยเชื่อมต่อกับเซสชันปัจจุบันเท่านั้น
พารามิเตอร์นี้ถูกต้องแต่ไม่มีผล เมื่อเซสชันถูกจัดเก็บไว้ในคอมพิวเตอร์เฉพาะที่ แต่ไม่ได้เชื่อมต่อกับเซสชันปัจจุบัน
- พิมพ์ :
Int32
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
True
- ยอมรับอักขระตัวแทน:
False
-InstanceId
ระบุ ID อินสแตนซ์ของเซสชันที่ไม่ได้เชื่อมต่อ รหัสอินสแตนซ์คือ GUID ที่ระบุ PSSession บนคอมพิวเตอร์เฉพาะที่หรือระยะไกลโดยไม่ซ้ำกัน รหัสอินสแตนซ์ถูกจัดเก็บไว้ในคุณสมบัติ InstanceID ของ PSSession
- พิมพ์ :
ไกด์
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-JobName
ระบุชื่อที่จำง่ายสำหรับงานที่ส่งคืน Receive-PSSession
Receive-PSSession ส่งคืนงานเมื่อค่าของพารามิเตอร์ OutTarget เป็นงาน หรืองานที่กำลังรันอยู่ในเซสชันที่ไม่ได้เชื่อมต่อเริ่มต้นขึ้นในเซสชันปัจจุบัน
ถ้างานที่กำลังรันอยู่ในเซสชันที่ไม่ได้เชื่อมต่อเริ่มต้นขึ้นในเซสชันปัจจุบัน PowerShell จะนำออบเจ็กต์งานเดิมกลับมาใช้ใหม่ในเซสชัน และละเว้นค่าของพารามิเตอร์ JobName
หากงานที่กำลังทำงานอยู่ในเซสชันที่ไม่ได้เชื่อมต่อเริ่มต้นในเซสชันอื่น PowerShell จะสร้างวัตถุงานใหม่ ใช้ชื่อเริ่มต้น แต่คุณสามารถใช้พารามิเตอร์นี้เพื่อเปลี่ยนชื่อได้
หากค่าเริ่มต้นหรือค่าที่ชัดเจนของพารามิเตอร์ OutTarget ไม่ใช่งาน คำสั่งจะสำเร็จ แต่พารามิเตอร์ JobName จะไม่มีผลกระทบ
- พิมพ์ :
String
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-Name
ระบุชื่อที่จำง่ายของเซสชันที่ไม่ได้เชื่อมต่อ
- พิมพ์ :
String
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-OutTarget
กำหนดวิธีการส่งคืนผลลัพธ์เซสชัน ค่าที่ยอมรับได้สำหรับพารามิเตอร์นี้คือ:
- งาน ส่งกลับผลลัพธ์แบบอะซิงโครนัสในวัตถุงาน คุณสามารถใช้พารามิเตอร์ JobName เพื่อระบุชื่อหรือชื่อใหม่สำหรับงาน
- โฮสต์ ส่งกลับผลลัพธ์ไปยังบรรทัดคำสั่ง (พร้อมกัน) หากคำสั่งกำลังดำเนินต่อหรือผลลัพธ์มีออบเจ็กต์จำนวนมาก การตอบสนองอาจล่าช้า
ค่าเริ่มต้นของพารามิเตอร์ OutTarget คือ Host หากคำสั่งที่ได้รับในเซสชันที่ไม่ได้เชื่อมต่อเริ่มต้นขึ้นในเซสชันปัจจุบัน ค่าเริ่มต้นของพารามิเตอร์ OutTarget คือรูปแบบที่คำสั่งเริ่มทำงาน หากคำสั่งเริ่มทำงานเป็นงาน โดยค่าเริ่มต้น คำสั่งนั้นจะถูกส่งกลับเป็นงาน มิฉะนั้นจะถูกส่งกลับไปยังโปรแกรมโฮสต์ตามค่าเริ่มต้น
โดยทั่วไป โปรแกรมโฮสต์จะแสดงออบเจ็กต์ที่ส่งคืนที่บรรทัดคำสั่งโดยไม่ชักช้า แต่ลักษณะการทำงานนี้อาจเปลี่ยนแปลงได้
- พิมพ์ :
OutTarget
- ค่าที่ยอมรับ:
ค่าเริ่มต้น โฮสต์ งาน
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-Port
ระบุพอร์ตเครือข่ายของคอมพิวเตอร์ระยะไกลที่ใช้ในการเชื่อมต่อกับเซสชันอีกครั้ง หากต้องการเชื่อมต่อกับคอมพิวเตอร์ระยะไกล จะต้องฟังบนพอร์ตที่ใช้การเชื่อมต่อ พอร์ตเริ่มต้นคือ 5985 ซึ่งเป็นพอร์ต WinRM สำหรับ HTTP และ 5986 ซึ่งเป็นพอร์ต WinRM สำหรับ HTTPS
ก่อนที่จะใช้พอร์ตอื่น คุณต้องกำหนดค่าตัวฟัง WinRM บนคอมพิวเตอร์ระยะไกลเพื่อฟังบนพอร์ตนั้น หากต้องการกำหนดค่า Listener ให้พิมพ์คำสั่งสองคำสั่งต่อไปนี้ที่พร้อมท์ PowerShell:
Remove-Item -Path WSMan:\Localhost\listener\listener* -RecurseNew-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>อย่าใช้พารามิเตอร์ พอร์ต เว้นแต่จำเป็น พอร์ตที่ตั้งค่าไว้ในคำสั่งจะนำไปใช้กับคอมพิวเตอร์หรือเซสชันทั้งหมดที่คำสั่งรัน การตั้งค่าพอร์ตสำรองอาจทำให้คำสั่งไม่ทำงานบนคอมพิวเตอร์ทุกเครื่อง
- พิมพ์ :
Int32
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-Session
ระบุเซสชันที่ไม่ได้เชื่อมต่อ ป้อนตัวแปรที่มี PSSession หรือคำสั่งที่สร้างหรือรับ PSSession เช่น คำสั่ง Get-PSSession
- พิมพ์ :
PSSession
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
True
- ยอมรับอักขระตัวแทน:
False
-SessionOption
ระบุตัวเลือกขั้นสูงสำหรับเซสชัน ป้อนออบเจ็กต์ SessionOption เช่น ออบเจ็กต์ที่คุณสร้างโดยใช้ cmdlet New-PSSessionOption หรือตารางแฮชที่คีย์เป็นชื่อตัวเลือกเซสชันและค่าเป็นเซสชัน ค่าตัวเลือก
ค่าเริ่มต้นสำหรับตัวเลือกต่างๆ จะถูกกำหนดโดยค่าของตัวแปรการกำหนดลักษณะ $PSSessionOption หากมีการตั้งค่าไว้ มิฉะนั้น ค่าเริ่มต้นจะถูกกำหนดโดยตัวเลือกที่ตั้งค่าไว้ในการกำหนดค่าเซสชัน
ค่าตัวเลือกเซสชันจะมีความสำคัญเหนือกว่าค่าเริ่มต้นสำหรับเซสชันที่ตั้งค่าในตัวแปรการกำหนดลักษณะ $PSSessionOption และในการกำหนดค่าเซสชัน อย่างไรก็ตาม สิ่งเหล่านี้จะไม่มีความสำคัญเหนือค่าสูงสุด โควต้า หรือขีดจำกัดที่ตั้งไว้ในการกำหนดค่าเซสชัน
สำหรับคำอธิบายของตัวเลือกเซสชันที่มีค่าเริ่มต้น โปรดดูที่ New-PSSessionOption สำหรับข้อมูลเกี่ยวกับตัวแปรการตั้งค่า $PSSessionOption โปรดดู about_Preference_Variables สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าเซสชัน โปรดดู about_Session_Configurations
- พิมพ์ :
PSSessionตัวเลือก
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-UseSSL
บ่งชี้ว่า cmdlet นี้ใช้โปรโตคอล Secure Sockets Layer (SSL) เพื่อเชื่อมต่อกับเซสชันที่ไม่ได้เชื่อมต่อ ตามค่าเริ่มต้น จะไม่มีการใช้ SSL
WS-Management เข้ารหัสเนื้อหา PowerShell ทั้งหมดที่ส่งผ่านเครือข่าย UseSSL คือการป้องกันเพิ่มเติมที่ส่งข้อมูลผ่านการเชื่อมต่อ HTTPS แทนการเชื่อมต่อ HTTP
ถ้าคุณใช้พารามิเตอร์นี้ และ SSL ไม่พร้อมใช้งานบนพอร์ตที่ใช้สำหรับคำสั่ง คำสั่งจะล้มเหลว
- พิมพ์ :
SwitchParameter
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
False
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-WhatIf
แสดงสิ่งที่จะเกิดขึ้นหาก cmdlet ทำงาน cmdlet ไม่ทำงาน
- พิมพ์ :
SwitchParameter
- นามแฝง :
wi
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
False
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
อินพุต
PSSession
คุณสามารถไปป์วัตถุเซสชันไปยัง cmdlet นี้ เช่นวัตถุที่ส่งคืนโดย cmdlet Get-PSSession
Int32
คุณสามารถไพพ์รหัสเซสชันไปที่ cmdlet นี้
ไกด์
คุณสามารถไปป์รหัสอินสแตนซ์ของเซสชัน cmdlet นี้
สตริง
คุณสามารถไปป์ชื่อเซสชันไปที่ cmdlet นี้
เอาท์พุต
งาน
ถ้าค่าหรือค่าเริ่มต้นของพารามิเตอร์ OutTarget คือ Job Receive-PSSession จะส่งกลับอ็อบเจ็กต์งาน
PSObject
cmdlet นี้ส่งคืนผลลัพธ์ของคำสั่งที่ทำงานในเซสชันที่ไม่ได้เชื่อมต่อ ถ้ามี
หมายเหตุ
PowerShell มีนามแฝงต่อไปนี้สำหรับ Receive-PSSession:
ทุกแพลตฟอร์ม:
rcsn
cmdlet นี้ใช้ได้เฉพาะบนแพลตฟอร์ม Windows เท่านั้น
Receive-PSSession รับผลลัพธ์จากเซสชันที่ถูกตัดการเชื่อมต่อเท่านั้น เฉพาะเซสชันที่เชื่อมต่อหรือสิ้นสุดที่คอมพิวเตอร์ที่ใช้ PowerShell 3.0 หรือเวอร์ชันที่ใหม่กว่าเท่านั้นที่สามารถยกเลิกการเชื่อมต่อและเชื่อมต่อใหม่ได้
หากคำสั่งที่ทำงานอยู่ในเซสชันที่ไม่ได้เชื่อมต่อไม่ได้สร้างผลลัพธ์ หรือหากผลลัพธ์ถูกส่งกลับไปยังเซสชันอื่นแล้ว Receive-PSSession จะไม่สร้างเอาต์พุตใดๆ
โหมดบัฟเฟอร์เอาต์พุตของเซสชันจะกำหนดวิธีที่คำสั่งในเซสชันจัดการเอาต์พุตเมื่อเซสชันถูกตัดการเชื่อมต่อ เมื่อค่าของตัวเลือก OutputBufferingMode ของเซสชันคือ Drop และบัฟเฟอร์เอาต์พุตเต็ม คำสั่งจะเริ่มลบเอาต์พุต Receive-PSSession ไม่สามารถกู้คืนเอาต์พุตนี้ได้ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกโหมดบัฟเฟอร์เอาต์พุต ดูบทวิธีใช้สำหรับ New-PSSessionOption และ New-PSTransportOption cmdlet
คุณไม่สามารถเปลี่ยนค่าการหมดเวลาที่ไม่ได้ใช้งานของ PSSession เมื่อคุณเชื่อมต่อกับ PSSession หรือรับผลลัพธ์ พารามิเตอร์ SessionOption ของ Receive-PSSession รับออบเจ็กต์ SessionOption ที่มีค่า IdleTimeout อย่างไรก็ตาม ค่า IdleTimeout ของออบเจ็กต์ SessionOption และค่า IdleTimeout ของตัวแปร $PSSessionOption จะถูกละเว้นเมื่อ เชื่อมต่อกับ PSSession หรือรับผลลัพธ์
- คุณสามารถตั้งค่าและเปลี่ยนการหมดเวลาไม่ได้ใช้งานของ PSSession เมื่อคุณสร้าง PSSession โดยใช้
New-PSSessionหรือเรียกใช้-Commandcmdlet และเมื่อคุณยกเลิกการเชื่อมต่อจาก PSSession - คุณสมบัติ IdleTimeout ของ PSSession มีความสำคัญอย่างยิ่งต่อเซสชันที่ถูกตัดการเชื่อมต่อ เนื่องจากคุณสมบัตินี้จะกำหนดระยะเวลาที่เซสชันที่ถูกตัดการเชื่อมต่อจะคงอยู่ในคอมพิวเตอร์ระยะไกล เซสชันที่ถูกตัดการเชื่อมต่อจะถือว่าไม่ได้ใช้งานทันทีที่ถูกตัดการเชื่อมต่อ แม้ว่าคำสั่งจะทำงานในเซสชันที่ไม่ได้เชื่อมต่อก็ตาม
หากคุณเริ่มต้นงานในเซสชันระยะไกลโดยใช้พารามิเตอร์ AsJob ของ cmdlet Inake-Command วัตถุงานจะถูกสร้างขึ้นในเซสชันปัจจุบัน แม้ว่า งานรันในเซสชันระยะไกล หากคุณยกเลิกการเชื่อมต่อเซสชันระยะไกล วัตถุงานในเซสชันปัจจุบันจะถูกตัดการเชื่อมต่อจากงาน ออบเจ็กต์งานประกอบด้วยผลลัพธ์ใดๆ ที่ถูกส่งคืน แต่ไม่ได้รับผลลัพธ์ใหม่จากงานในเซสชันที่ไม่ได้เชื่อมต่อ
หากไคลเอ็นต์อื่นเชื่อมต่อกับเซสชันที่มีงานที่กำลังทำงานอยู่ ผลลัพธ์ที่ถูกส่งไปยังออบเจ็กต์งานต้นฉบับในเซสชันเดิมจะไม่พร้อมใช้งานในเซสชันที่เชื่อมต่อใหม่ เฉพาะผลลัพธ์ที่ไม่ได้ส่งไปยังออบเจ็กต์งานเดิมเท่านั้นที่จะพร้อมใช้งานในเซสชันที่เชื่อมต่อใหม่
ในทำนองเดียวกัน หากคุณเริ่มสคริปต์ในเซสชันแล้วยกเลิกการเชื่อมต่อจากเซสชัน ผลลัพธ์ใดๆ ที่สคริปต์ส่งไปยังเซสชันก่อนที่จะยกเลิกการเชื่อมต่อจะไม่พร้อมใช้งานสำหรับไคลเอนต์อื่นที่เชื่อมต่อกับเซสชัน
เพื่อป้องกันข้อมูลสูญหายในเซสชันที่คุณต้องการยกเลิกการเชื่อมต่อ ให้ใช้พารามิเตอร์ InDisconnectedSession ของ Inrigger-Command cmdlet เนื่องจากพารามิเตอร์นี้ป้องกันไม่ให้ผลลัพธ์ถูกส่งกลับไปยังเซสชันปัจจุบัน ผลลัพธ์ทั้งหมดจึงพร้อมใช้งานเมื่อมีการเชื่อมต่อเซสชันอีกครั้ง
คุณยังสามารถป้องกันข้อมูลสูญหายได้โดยใช้ Intake-Command cmdlet เพื่อเรียกใช้คำสั่ง Start-Job ในเซสชันระยะไกล ในกรณีนี้ อ็อบเจ็กต์งานจะถูกสร้างขึ้นในเซสชันระยะไกล คุณไม่สามารถใช้ cmdlet Receive-PSSession เพื่อรับผลลัพธ์งานได้ ให้ใช้ Connect-PSSession cmdlet เพื่อเชื่อมต่อกับเซสชันแทน จากนั้นใช้ Inrigger-Command cmdlet เพื่อเรียกใช้คำสั่ง Receive-Job ใน เซสชัน
เมื่อเซสชันที่มีงานที่กำลังทำงานอยู่ถูกตัดการเชื่อมต่อแล้วเชื่อมต่อใหม่ อ็อบเจ็กต์งานเดิมจะถูกนำมาใช้ซ้ำเฉพาะในกรณีที่งานถูกตัดการเชื่อมต่อและเชื่อมต่อกับเซสชันเดียวกันอีกครั้ง และคำสั่งให้เชื่อมต่อใหม่ไม่ได้ระบุชื่องานใหม่ หากเซสชันเชื่อมต่อกับเซสชันไคลเอ็นต์อื่นอีกครั้งหรือมีการระบุชื่องานใหม่ PowerShell จะสร้างออบเจ็กต์งานใหม่สำหรับเซสชันใหม่
เมื่อคุณยกเลิกการเชื่อมต่อ PSSession สถานะของเซสชันจะถูกตัดการเชื่อมต่อ และความพร้อมใช้งานจะเป็นไม่มี
- ค่าของคุณสมบัติ สถานะ สัมพันธ์กับเซสชันปัจจุบัน ค่า Disconnected หมายความว่า PSSession ไม่ได้เชื่อมต่อกับเซสชันปัจจุบัน อย่างไรก็ตาม ไม่ได้หมายความว่า PSSession จะถูกตัดการเชื่อมต่อจากเซสชันทั้งหมด อาจเชื่อมต่อกับเซสชันอื่น หากต้องการทราบว่าคุณสามารถเชื่อมต่อหรือเชื่อมต่อกับเซสชันอีกครั้งได้หรือไม่ ให้ใช้คุณสมบัติ ความพร้อมใช้งาน
- ค่า ความพร้อมใช้งาน เป็นไม่มี บ่งชี้ว่าคุณสามารถเชื่อมต่อกับเซสชันได้ ค่า Busy บ่งชี้ว่าคุณไม่สามารถเชื่อมต่อกับ PSSession ได้เนื่องจากเชื่อมต่อกับเซสชันอื่น
- สำหรับข้อมูลเพิ่มเติมเกี่ยวกับค่าของคุณสมบัติ สถานะ ของเซสชัน โปรดดูที่ RunspaceState
- สำหรับข้อมูลเพิ่มเติมเกี่ยวกับค่าของคุณสมบัติ ความพร้อมใช้งาน ของเซสชัน โปรดดูที่ RunspaceAvailability