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

รับ 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 ITTask

Receive-PSSession ระบุคอมพิวเตอร์ระยะไกลด้วยพารามิเตอร์ ComputerName พารามิเตอร์ ชื่อ ระบุเซสชัน ITTask บนคอมพิวเตอร์ Server01 ตัวอย่างได้รับผลลัพธ์ของคำสั่งที่ทำงานในเซสชัน ITTask

เนื่องจากคำสั่งไม่ได้ใช้พารามิเตอร์ OutTarget ผลลัพธ์จึงปรากฏบนบรรทัดคำสั่ง

ตัวอย่างที่ 2: รับผลลัพธ์ของคำสั่งทั้งหมดในเซสชันที่ไม่ได้เชื่อมต่อ

ตัวอย่างนี้รับผลลัพธ์ของคำสั่งทั้งหมดที่รันในเซสชันที่ไม่ได้เชื่อมต่อทั้งหมดบนคอมพิวเตอร์ระยะไกลสองเครื่อง

หากเซสชันใดไม่ได้ถูกตัดการเชื่อมต่อหรือไม่ได้เรียกใช้คำสั่ง Receive-PSSession จะไม่เชื่อมต่อกับเซสชันและไม่ส่งคืนเอาต์พุตหรือข้อผิดพลาดใดๆ

Get-PSSession -ComputerName Server01, Server02 | Receive-PSSession

Get-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               Available

New-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 4

cmdlet 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* -Recurse
New-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 หรือ เรียกใช้-Command cmdlet และเมื่อคุณยกเลิกการเชื่อมต่อจาก 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

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