การสนับสนุนระยะไกลสำหรับความช่วยเหลือ PowerShell ทำงานกับเซสชัน Powershell ระยะไกล การสร้างเซสชันใน PowerShell

โกลอฟนา / ฟังก์ชั่นหลัก

สรุป: คนรู้จัก iz ในระยะทาง keruvannyamจาก Windows PowerShell

Weekend Scripter: เปิดใช้งานการจัดช่องไฟระยะไกลของ Windows

Microsoft Scripting Guy, เอ็ด วิลสัน รับสาย วันนี้ ฉันจะเผยแพร่ข้อความที่ตัดตอนมาจากหนังสือ Windows PowerShell 3.0 Step by Step เล่มใหม่ ซึ่งดูเหมือน Microsoft Press ในขณะเดียวกันก็สามารถจองหนังสือล่วงหน้าได้

WinRM - ลบ Windows Kernel

ใน Windows Server 2012 WinRM กำลังทำงานอยู่เบื้องหลังเพื่อรองรับการลบคำสั่ง Windows PowerShell ระยะไกล WinRM คือการนำมาตรฐานอุตสาหกรรม WS-Management Protocol ของ Microsoft ไปใช้ นั่นเป็นเหตุผลที่ WinRM หวัง คู่มือการใช้งานการเข้าถึงระบบระยะไกลได้อย่างรวดเร็วไม่สามารถปิดไฟร์วอลล์ได้ กลไกเดียวกันกับที่ชนะคำสั่ง CIM ใหม่ ด้วยวิธีนี้ คุณสามารถเชื่อมต่อกับเครื่องที่ใช้ Windows Server 2012 เพื่อเรียกใช้คำสั่งหรือเปิดคอนโซล Windows PowerShell แบบโต้ตอบได้ ใน Windows 8 อีกด้านหนึ่ง WinRM ถูกล็อกไว้ ไม่ได้หมายความว่าต้องทำอะไรต่อไป แล้วรัน cmdlet เปิดใช้งาน-PSRemoting. เมื่อเรียกใช้ cmdlet นี้ บรรทัดต่อไปนี้จะปรากฏขึ้น:

1. เริ่มหรือเริ่มบริการ WinRM ใหม่

2. ประเภทของการเริ่มต้นบริการ WinRM จะถูกติดตั้งโดยอัตโนมัติ

3. Listener ถูกสร้างขึ้นเพื่อรับการเชื่อมต่อสำหรับที่อยู่ IP ทั้งหมด

4. ปิดไฟร์วอลล์สำหรับการรับส่งข้อมูล WS-Man

5. อัปโหลดการกำหนดค่า Microsoft.powershell

6. อัปโหลด Microsoft.powershell.workflow config

7. อัปโหลด Microsoft.powershell32 config

โดยการยืดกระบวนการนี้ การทำงานของการกระตุ้นการปรับปรุงสภาพผิว หากคุณรู้ว่าฟังก์ชันคืออะไรและไม่ต้องการเปลี่ยนแปลงก่อนหน้านั้น คุณสามารถเรียกใช้คำสั่งนี้โดยใช้คีย์ -บังคับและด้วยวิธีนี้จะไม่แสดงการยืนยัน ไวยากรณ์สำหรับคำสั่งนี้แสดงอยู่ด้านล่าง

เปิดใช้งาน-PSRemoting –Force

ตอนนี้ ให้ใส่ฟังก์ชัน Enable-PSRemoting ในโหมดโต้ตอบ รวมถึงข้อมูลทั้งหมดที่แสดง

PS C:\> เปิดใช้งาน-PSRemoting

การกำหนดค่าด่วน WinRM

กดปุ่ม "Set-WSManQuickConfig" เพื่อให้แน่ใจว่าการจัดการโปรแกรมนี้มีประสิทธิภาพสำหรับความช่วยเหลือของ Windows Remote Management (WinRM) Service ซึ่งรวมถึง:

1. การเริ่มต้นหรือเริ่มต้นใหม่ (ถ้าเริ่มต้นแล้ว) บริการ WinRM

2. การตั้งค่าประเภทการเริ่มต้นบริการ WinRM เป็น Automatic

3. การสร้าง Listener เพื่อรับคำขอเกี่ยวกับที่อยู่ IP ใด ๆ

4. การเปิดใช้งาน Windows Firewall เรียงลำดับข้อยกเว้นสำหรับการรับส่งข้อมูล WS-Management (สำหรับ http เท่านั้น)

คุณต้องการดำเนินการต่อหรือไม่

WinRM สามารถอัปเดตเพื่อรับคำขอได้

เปลี่ยนประเภทบริการ WinRM เรียบร้อยแล้ว

เริ่มบริการ WinRM แล้ว

WinRM สามารถอัปเดตสำหรับการจัดการระยะไกล

สร้างผู้ฟัง WinRM บน HTTP://* สำหรับคำขอ WS-Man ไปยัง IP ใด ๆ บนเครื่องนี้

เปิดใช้งานข้อยกเว้นไฟร์วอลล์ WinRM

microsoft.powershell SDDL:

[Y] ใช่ [A] ใช่ทั้งหมด [N] ไม่ใช่ [L] ไม่ใช่ถึงทั้งหมด [S] ระงับ [?] ความช่วยเหลือ (ค่าเริ่มต้นคือ "Y"):y

คุณแน่ใจหรือไม่ว่าต้องการดำเนินการนี้

กำลังดำเนินการ "Set-PSSessionConfiguration" บนเป้าหมาย "ชื่อ:

microsoft.powershell.workflow SDDL:

O:NSG:BAD:P(A;;GA;;;BA)(A;;GA;;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;; ;ว.ด.). นี่จะ

อนุญาตให้ผู้ใช้ที่เลือกเรียกใช้คำสั่ง Windows PowerShell จากระยะไกลบนคอมพิวเตอร์เครื่องนี้"

[Y] ใช่ [A] ใช่ทั้งหมด [N] ไม่ใช่ [L] ไม่ใช่ถึงทั้งหมด [S] ระงับ [?] ความช่วยเหลือ (ค่าเริ่มต้นคือ "Y"):y

คุณแน่ใจหรือไม่ว่าต้องการดำเนินการนี้

กำลังดำเนินการ "Set-PSSessionConfiguration" บนเป้าหมาย "ชื่อ:

microsoft.powershell32 SDDL:

O:NSG:BAD:P(A;;GA;;;BA)(A;;GA;;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;; ;ว.ด.). นี่จะ

อนุญาตให้ผู้ใช้ที่เลือกเรียกใช้คำสั่ง Windows PowerShell จากระยะไกลบนคอมพิวเตอร์เครื่องนี้"

[Y] ใช่ [A] ใช่ทั้งหมด [N] ไม่ใช่ [L] ไม่ใช่ถึงทั้งหมด [S] ระงับ [?] ความช่วยเหลือ (ค่าเริ่มต้นคือ "Y"):y

หลังจากนั้น เมื่อพบการกำหนดค่า คุณสามารถย้อนกลับลำดับความสำคัญ WinRM สำหรับ cmdlet . เพิ่มเติม ทดสอบ-WSMan. หากระบบได้รับการตั้งค่าอย่างถูกต้อง ข้อมูลจะแสดงที่คล้ายกับปัจจุบัน

PS C:\>Test-WSMan -ชื่อคอมพิวเตอร์ w8c504

รุ่นผลิตภัณฑ์: OS: 0.0.0 SP: 0.0 Stack: 3.0

cmdlet นี้ยังทำงานบนคอมพิวเตอร์ที่ใช้ Windows PowerShell 2.0 คำแนะนำด้านล่างก้นilustraєถึงตัวควบคุมโดเมนบน Windows Server 2008 z ติดตั้ง Windows PowerShell 2.0 ซึ่ง WinRM ถูกจับ

PS C:\>Test-WSMan -ComputerName dc1

wsmid: http://schema.dmtf.org/wbem/wsman/identity/1/wsmanidentity.xsd

ProtocolVersion: http://schema.dmtf.org/wbem/wsman/1/wsman.xsd

ผู้จำหน่ายผลิตภัณฑ์: Microsoft Corporation

รุ่นผลิตภัณฑ์: OS: 0.0.0 SP: 0.0 Stack: 2.0

หากไม่ได้ตั้งค่า WinRM การแจ้งเตือนเกี่ยวกับการให้อภัยจะถูกเปิด ในช่วงเวลา ระบบปฏิบัติการ Windows 8 เราจะมาเร็ว ๆ นี้

PS C:\>Test-WSMan -ชื่อคอมพิวเตอร์ w8c10

ทดสอบ-WSMan:

xmlns:f="http://schema.microsoft.com/wbem/wsman/1/wsmanfault" Code="2150859046"

Machine="w8c504.iammred.net">อย่าลืม WinRM ตรวจสอบ

ว่าชื่อคอมพิวเตอร์ที่ระบุถูกต้อง สามารถเข้าถึงคอมพิวเตอร์ได้ผ่านทาง

เครือข่าย และมีการเปิดใช้ข้อยกเว้นไฟร์วอลล์สำหรับบริการ WinRM และอนุญาต

เข้าถึงได้จากคอมพิวเตอร์เครื่องนี้ โดยค่าเริ่มต้น ข้อยกเว้นไฟร์วอลล์ WinRM สำหรับสาธารณะ

โปรไฟล์จำกัดการเข้าถึงคอมพิวเตอร์ระยะไกลภายในเครือข่ายย่อยเดียวกัน

ที่บรรทัด:1 อักขระ:1

ทดสอบ-WSMan -ComputerName w8c10

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo: InvalidOperation: (w8c10:String) , InvalidOperationException

FullyQualifiedErrorId: WsManError, Microsoft.WSMan.Management.TestWSManCommand

โปรดทราบว่าการเปิดใช้งาน Remote Management ด้วย Enable-PSRemoting cmdlet จะไม่ปิดใช้งานไฟร์วอลล์การจัดการระยะไกล ดังนั้นการพยายามเผยแพร่เครื่อง Windows 8 จะไม่ประสบความสำเร็จ

PS C:\> ping w8c504

ปิง w8c504.iammred.net ด้วยข้อมูล 32 ไบต์:

คำขอหมดเวลา

คำขอหมดเวลา

คำขอหมดเวลา

คำขอหมดเวลา

สถิติปิงสำหรับ 192.168.0.56:

แพ็คเก็ต: ส่ง = 4 ได้รับ = 0, สูญหาย = 4 (สูญเสีย 100%)

ทุกอย่างใช้ได้กับ Windows Server 2012

PS C:\> ping w8s504

ปิง w8s504.iammred.net ด้วยข้อมูล 32 ไบต์:

<1ms TTL=128

ตอบกลับจาก 192.168.0.57: bytes=32 time<1ms TTL=128

ตอบกลับจาก 192.168.0.57: bytes=32 time<1ms TTL=128

ตอบกลับจาก 192.168.0.57: bytes=32 time<1ms TTL=128

สถิติ Ping สำหรับ 192.168.0.57:

แพ็คเก็ต: ส่ง = 4 ได้รับ = 4 สูญหาย = 0 (สูญเสีย 0%)

เวลาไปกลับโดยประมาณในชั่วโมงฤดูร้อน:

ต่ำสุด = 0ms สูงสุด = 0ms เฉลี่ย = 0ms

นั่นคือทั้งหมดที่ใช้ในการปรับปรุง WinRM

Ed Wilson, Microsoft Scripting Guy

ต้นฉบับ:

เมื่อเร็ว ๆ นี้ ฉันมีโอกาสเสียเวลาสามชั่วโมงในการเข้าถึงระยะไกลผ่าน Powershell คำแนะนำดังกล่าวเป็นทางเลือกที่มีประสิทธิภาพสำหรับ Remote Desktop Services ในหลายกรณี (เริ่มบริการใหม่บนโฮสต์ VDS ระยะไกล ทำสำเนาสำรอง ดูระบบของระบบอีกครั้ง)

ความสามารถในการสร้างเซสชัน Powershell ระยะไกลถูกนำมาใช้ในเวอร์ชัน 2 ซึ่งใช้ cmdlet Enter-PSSession/Invoke-Command Prote ก่อนชนะนักเรียนเตรียมกลาง

โรบิโมคืออะไร บนเซิร์ฟเวอร์:

ครก 1:เปิดคอนโซล Powershell และอนุญาตเซสชันระยะไกลโดยใช้ Enable-PSRemoting cmdlet พร้อมปุ่มบังคับ

เปิดใช้งาน-PSRemoting -Force

ครก 2:พิจารณาใหม่ว่าบริการ WinRM กำลังทำงานอยู่

เริ่มบริการ WinRM

ครก 3:เราได้เปลี่ยนกฎที่ brandmauer เพื่อให้สามารถเชื่อมต่ออินพุทได้

บนคอมพิวเตอร์ ลูกค้าจำเป็นต้อง vikonati kіlka diy:

ครก 1:อนุญาตให้เชื่อมต่อกับโหนดระยะไกล สำหรับการเข้าถึงโหนดใด ๆ คุณสามารถเร่งโครงสร้างที่ไม่เหมาะสมได้:

ชุดไอเท็ม wsman:\localhost\client\trustedhosts * -Force

ครก 2:ตรวจสอบให้แน่ใจว่า brandmauer ไม่ได้ปิดกั้นภายนอกของวัน

ในตอนนี้ ในการเชื่อมต่อกับโหนดระยะไกลผ่าน Powershell คุณสามารถทำได้ดังนี้:

Enter-PSSession 192.168.1.160 - หนังสือรับรอง VMNAME\User

ค่า 192.168.1.160 และ VMNAME\User ต้องถูกแทนที่ด้วยที่อยู่ของโฮสต์ระยะไกลและชื่อของโฮสต์ Windows บนเซิร์ฟเวอร์

ขณะนี้การเข้าถึงระยะไกลผ่าน Powershell สามารถทำได้ Prote єอีกหนึ่งความแตกต่างกันนิดหน่อย บางทีพวกคุณบางคนอาจมีประวัติใน Powershell โปรไฟล์คือสคริปต์พิเศษที่เปิดใช้งานเมื่อเริ่มต้นคอนโซล ตัวอย่างเช่น คุณสามารถกำหนดนามแฝงและวิคอนที่จำเป็นทั้งหมดไว้ข้างหน้าคุณได้

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

Register-PSSessionConfiguration -name Config1 -startupScript c:\scripts\Startup.ps1

หลังจากนั้น เมื่อเชื่อมต่อกับโหนดระยะไกล เมื่อคำสั่ง Enter-PSSession ต่างกัน ให้ระบุชื่อของการกำหนดค่า

Enter-PSSession 192.168.1.160 -ConfigurationName Config1 - Credential VMNAME\User

ขณะนี้ เป็นไปไม่ได้ที่จะไม่ใช้ทรัพยากรของเซิร์ฟเวอร์ในการสร้างเซสชันการเชื่อมต่อผ่านบริการเดสก์ท็อประยะไกล และอยู่ห่างจากเซิร์ฟเวอร์เพื่อขอความช่วยเหลือจาก Powershell

โปรแกรมเริ่มต้นระยะไกลของ powershell

การเริ่มต้นเซสชันแบบโต้ตอบ

เมื่อต้องการเริ่มเซสชันแบบโต้ตอบจากคอมพิวเตอร์ระยะไกลเครื่องหนึ่ง ให้พิมพ์ Enter-PSSession cmdlet ตัวอย่างเช่น เมื่อต้องการเริ่มต้นเซสชันแบบโต้ตอบจากคอมพิวเตอร์ระยะไกล Server01 ให้ป้อน:
Enter-pssession Server01
ที่บรรทัดคำสั่ง ชื่อของคอมพิวเตอร์จะปรากฏขึ้น จนกว่าคุณจะเชื่อมต่อ คำสั่งทั้งหมดที่ป้อนในบรรทัดคำสั่งจะรันบนคอมพิวเตอร์ระยะไกล และผลลัพธ์จะแสดงบนคอมพิวเตอร์ท้องถิ่น
หากต้องการสิ้นสุดเซสชันแบบโต้ตอบ ให้ป้อน:
ออก-psession

Vikonannya อยู่ห่างไกลจากทีม

ชัยชนะ cmdlet ของ Invoke-Command เพื่อ viconate คำสั่งบนคอมพิวเตอร์ระยะไกลอย่างน้อยหนึ่งเครื่อง ตัวอย่างเช่น หากต้องการรันคำสั่ง Get-UICulture บนคอมพิวเตอร์ระยะไกล Server01 และ Server02 ให้ป้อน:

เรียกใช้คำสั่ง -computername Server01, Server02 (รับ-UICulture)
ข้อมูลที่ส่งออกจะถูกส่งกลับไปยังคอมพิวเตอร์ของคุณ
เมื่อต้องการเรียกใช้สคริปต์บนคอมพิวเตอร์ตั้งแต่หนึ่งเครื่องขึ้นไป ให้รวมพารามิเตอร์ FilePath ของ cmdlet คำสั่ง Invoke สคริปต์มีความผิดในการสังเกตหรือพร้อมใช้งานในคอมพิวเตอร์ท้องถิ่น ผลลัพธ์จะถูกหมุนไปยังเครื่องคอมพิวเตอร์
ตัวอย่างเช่น คำสั่งจะเรียกใช้สคริปต์ DiskCollect.ps1 บนคอมพิวเตอร์ระยะไกล Server01 และ Server02
เรียกใช้คำสั่ง -computername Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1

การติดตั้งการเชื่อมต่อถาวร
เมื่อต้องการตรวจสอบคำสั่งจำนวนหนึ่งจากข้อมูลสูง ให้สร้างเซสชันบนคอมพิวเตอร์ระยะไกล จากนั้นตรวจสอบ cmdlet คำสั่ง Invoke-Command เพื่อยืนยันคำสั่งจากเซสชันที่สร้างขึ้น หากต้องการสร้างเซสชันที่ถูกลบ ให้แท็ก New-PSSession cmdlet
ตัวอย่างเช่น คำสั่งถัดไปคือการสร้างเซสชันระยะไกลบนคอมพิวเตอร์ Server01 และเซสชันระยะไกลอื่นบนคอมพิวเตอร์ Server02 วอห์นนำอ็อบเจ็กต์ไปที่เซสชั่นของการเปลี่ยนแปลง $s
$s = new-pssession -computername Server01, Server02
หลังจากสร้างเซสชั่นแล้ว คุณสามารถ visconate คำสั่งได้ คะแนนของเซสชั่นนั้นคงที่ คุณสามารถรวบรวมข้อมูลในทีมเดียวและเอาชนะได้ในการบุก
ตัวอย่างเช่น คำสั่งถัดไปจะเป็นการแทนที่คำสั่ง Get-Hotfix ในเซสชันเพื่อเปลี่ยน $s และรับผลลัพธ์ของการเปลี่ยนแปลง $h Change $h ถูกสร้างขึ้นในเซสชันสกิน $s แต่ใช้ไม่ได้ในเซสชันในเครื่อง
เรียกใช้คำสั่ง -session $s ($h = รับโปรแกรมแก้ไขด่วน)
ตอนนี้คุณสามารถคว้าชัยชนะในทีมรุก เช่น เกมรุก ผลลัพธ์ปรากฏบนเครื่องคอมพิวเตอร์

เรียกใช้คำสั่ง -session $s ($h | โดยที่ ($_.installedby -ne "NTAUTHORITY\SYSTEM")

ทั้งหมดนำมาจาก https://technet.microsoft.com/en-us/library/dd819505.aspx

งานยอดนิยมอย่างหนึ่งสำหรับผู้ดูแลระบบคือการเรียกใช้คำสั่งใดๆ บนคอมพิวเตอร์ระยะไกลโดยไม่ต้องลุกจากงาน อาจจำเป็นต้องติดตั้งโปรแกรมหรือยูทิลิตี้ เปลี่ยนแปลงว่าคุณได้ติดตั้งหรือไม่ หรืออย่างอื่น และแทบจะไม่มีคอมพิวเตอร์มากกว่าหนึ่งเครื่องเลย ซึ่งมักจะต้องเรียกใช้คำสั่งบนเวิร์กสเตชันหรือเซิร์ฟเวอร์ที่แตกต่างกัน

Oskіlki zavdannya tsya เป็นที่นิยมวิธีการเหล่านั้นของvyrіshennyaіsnuєไม่มีตัวตน เริ่มต้นด้วยนโยบายกลุ่ม (ซึ่งสามารถหยุดได้เพื่อจุดประสงค์ในการเข้าสู่ระบบสคริปต์หรือการป้อนอัตโนมัติ) และลงท้ายด้วยระบบการจัดการที่ยากลำบาก เช่น System Center Essentials หรือ System Center Configuration Manager และในบทความนี้ผมอยากจะมาดูวิธีการที่มีตา บรรทัดคำสั่งหรือไฟล์ในสคริปต์และวิธีนี้จะไม่ส่งผลต่อการติดตั้งตัวแทนและปัญหาอื่นๆ Vtіm, yakіspoperednі vimogi, zvichayno, є ตัวอย่างเช่น คุณต้องทำงานดูแลระบบบนคอมพิวเตอร์ที่คุณต้องการเรียกใช้คำสั่ง (เพื่อประโยชน์ในสคริปต์ที่มีพร็อกซี่ แต่เกี่ยวกับสิ่งอื่น)

Psexec.exe

วิธีหนึ่งที่ฉันโปรดปรานในการดำเนินการงานนี้คือยูทิลิตี้บรรทัดคำสั่ง PsExec.exe ซึ่งเขียนโดย Mark Russinovich ซึ่งคุณสามารถเข้าถึงได้โดยอิสระจากเว็บไซต์ Windows SysInternals Possilannya สามารถทราบได้ในบทความ ไม่จำเป็นต้องติดตั้งลงในระบบ คุณสามารถคัดลอกไปยังโฟลเดอร์ใดโฟลเดอร์หนึ่ง ซึ่งสามารถวางไว้ใน %path% ที่เปลี่ยนแปลง และคลิกที่เชลล์ของบรรทัดคำสั่ง: Cmd หรือ PowerShell

แฮ็ค PsExec นั้นค่อนข้างง่าย ตัวอย่างเช่น หากต้องการ viconate ipconfig /flushdns บนคอมพิวเตอร์หลัก ให้เรียกใช้คำสั่งต่อไปนี้:

psexec \\main ipconfig /flushdns

คำสั่ง ipconfig จะทำงานบนคอมพิวเตอร์หลักภายใต้สกินของคุณ เมื่องาน ipconfig เสร็จสิ้น ไฟล์ข้อความทั้งหมดจะถูกโอนไปยังคอมพิวเตอร์ของคุณ และจะส่งกลับรหัสการออกคำสั่ง (รหัสข้อผิดพลาด) ด้วย ในขณะเดียวกันทีมก็ประสบความสำเร็จ เวลาชนะเป็น 0

ฉันนึกขึ้นได้ว่า PsExec ไม่ได้จบลงด้วยความเป็นไปได้ เมื่อคลิกยูทิลิตี้โดยไม่มีพารามิเตอร์ คุณสามารถดูตัวเลือกอื่นๆ ที่มีได้ ฉันเคารพในการกระทำของพวกเขาน้อยลง

กุญแจ -dดูเหมือนว่า PsExec นั้นไม่จำเป็นต้องตรวจสอบคำสั่ง แต่ก็เพียงพอแล้วที่จะเรียกใช้ її แล้วลืมมันไป ด้วยวิธีนี้ เราจะไม่นำข้อมูลใด ๆ ออกจากยูทิลิตี้คอนโซล หรือเราอาจไม่ได้ตรวจสอบความสมบูรณ์ของคำสั่งด้านหน้าเพื่อรันคำสั่งอื่น มันซับซ้อนกว่านั้นเพราะคุณต้องเรียกใช้ ตัวอย่างเช่น โปรแกรมติดตั้งบนคอมพิวเตอร์เดสก์ท็อป

หลังจากล็อก PsExec คำสั่งต่างๆ จะถูกปิดใช้งานในโหมดที่แนบ ดังนั้นระบบเมื่อปิดใช้งานคำสั่ง จะไม่แสดงวันเว้นวันหรือกล่องโต้ตอบ อย่างไรก็ตาม เป็นไปได้ที่จะเปลี่ยนลักษณะการทำงานนี้สำหรับคีย์เพิ่มเติม -ฉัน. จากนั้นคุณสามารถระบุหมายเลขเซสชันซึ่งจะแสดงในหน้าต่างใดหรือไม่สามารถระบุได้อินเทอร์เฟซจะแสดงในคอนโซลเซสชัน

ในการแสดงหน้าต่างที่มีข้อมูลเกี่ยวกับเวอร์ชันของระบบปฏิบัติการบนคอมพิวเตอร์หลัก ให้รัน PsExec ตามลำดับนี้:

psexec -i \\main winver.exe

ถ้าคุณต้องการพิมพ์คำสั่งในแถวบนคอมพิวเตอร์บางเครื่อง คุณจะต้องสามารถอ่านชื่อของพวกเขาได้จากรายการไฟล์ข้อความ

psexec @c:\comps.txt systeminfo.exe

หนึ่งในคุณสมบัติที่ดีที่สุดของ PsExec คือความสามารถในการเปลี่ยนเส้นทางอินพุต / เอาต์พุตระหว่างคอมพิวเตอร์ซึ่งทำให้เราสามารถเรียกใช้ได้เช่น cmd.exe บนเซิร์ฟเวอร์ระยะไกลและให้คำสั่งและบันทึกผลลัพธ์บนคอมพิวเตอร์ท้องถิ่น .

PsExec ทำงานอย่างไร

ทุกอย่างเรียบง่ายอย่างแยบยล ทรัพยากรของไฟล์ PsExec.exe ที่ชั่วร้ายมีไฟล์ที่ชั่วร้ายอีกไฟล์หนึ่ง - PSEXESVC ซึ่งเป็นบริการของ Windows ก่อนปิดคำสั่ง PsExec จะแตกไฟล์ทรัพยากรไปยังโฟลเดอร์การดูแลระบบที่แนบมาบนคอมพิวเตอร์ระยะไกล ไฟล์: \\Im'yaComputer\Admin$\system32\psexesvc.exe ตัวอย่างเช่น สำหรับความช่วยเหลือของสวิตช์ -c พวกเขาระบุว่าจำเป็นต้องคัดลอกไฟล์ที่คัดลอกไปยังระบบนี้ พวกเขาจะถูกคัดลอกไปยังโฟลเดอร์นี้ด้วย

เมื่อการเตรียม PsExec เสร็จสิ้น โปรแกรมจะติดตั้งและเริ่มบริการ โดยใช้ฟังก์ชัน Windows API เพื่อรับการรักษาโดยบริการต่างๆ หลังจากเปิดตัว PSEXESVC จะมีการสร้างช่องสัญญาณสองสามช่องระหว่าง PsExec และ PsExec เพื่อถ่ายโอนข้อมูล (คำสั่งอินพุต ผลลัพธ์ ฯลฯ) เมื่อทำงานเสร็จแล้ว PsExec จะเริ่มบริการและดูจากคอมพิวเตอร์เป้าหมาย

เครื่องมือการจัดการ Windows (WMI)

วิธีถัดไปในการปรับใช้งานที่ได้รับความนิยม เกี่ยวกับสิ่งที่ฉันอยากรู้ - Windows Management Instrumentation WMI พร้อมใช้งานบนระบบปฏิบัติการ Microsoft ทั้งหมดที่เริ่มต้นด้วย Windows 2000 และ Windows 9x และสามารถติดตั้งได้จากแพ็คเกจ ok WMI สงวนไว้สำหรับการล็อคและจะไม่ต้องปรับแต่งเพิ่มเติม สำหรับโยคะ มีสิทธิ์ของผู้ดูแลระบบเพียงพอที่อนุญาตบนไฟร์วอลล์ในโปรโตคอล DCOM WMI มีศักยภาพที่ดีในการจัดการระบบ แต่เราต้องการเพียงครั้งละหนึ่งระบบเท่านั้น

ในการเริ่มกระบวนการ เราต้องการเมธอด Create ของคลาส Win32_Process Vikoristovuvati โยคะเป็นเรื่องง่ายที่จะทำ PowerShell ต้องทำดังนี้:

$Computer = "หลัก"
$Command = "cmd.exe /c systeminfo.exe >
("\\$คอมพิวเตอร์\root\cimv2:Win32_Process") สร้าง($Command)

ที่นี่เป็นกระบวนการที่เริ่มต้น ฉันป้อน cmd.exe และแม้แต่คุณเป็นอาร์กิวเมนต์ก็ส่งคำสั่ง ไม่จำเป็น เนื่องจากคุณจำเป็นต้องเปลี่ยนความคมชัดของคอมพิวเตอร์ระยะไกล หรือใช้ตัวดำเนินการ cmd.exe เช่น " > » เพื่อเปลี่ยนเส้นทางมุมมองไปยังไฟล์ เมธอด Create จะไม่ตรวจสอบว่ากระบวนการเสร็จสมบูรณ์หรือไม่ และไม่ตรวจสอบผลลัพธ์ จากนั้นจะแจ้ง ID ของกระบวนการ - ProcessID ให้เราทราบ

หากคุณมีคอมพิวเตอร์ที่ยังไม่ได้ติดตั้ง PowerShell คุณสามารถเรียกเมธอด WMI ได้จากสคริปต์ VBScript ตัวอย่างเช่น แกนคือ:

รายการ #1 - เรียกใช้กระบวนการ WMI (VBScript)

คอมพิวเตอร์ = "PC3"
คำสั่ง = "cmd.exe /c systeminfo.exe > \\server\share\%computername%.txt"
ตั้งค่า objWMIService = GetObject("winmgmts:\\" & คอมพิวเตอร์ & "\root\cimv2:Win32_Process")
ผลลัพธ์ = objWMIService.Create("calc.exe", Null, Null, intProcessID)

นอกจากนี้ยังง่ายกว่าที่จะใช้ยูทิลิตี้บรรทัดคำสั่ง wmic.exe เพื่อเข้าถึงอินเทอร์เฟซแบบแมนนวลสำหรับหุ่นยนต์ WMI และเข้าสู่คลังระบบปฏิบัติการโดยเริ่มจาก Windows XP ในการรัน เช่น เครื่องคิดเลขบนคอมพิวเตอร์หลัก เพียงพอที่จะกดคำสั่ง:

wmic /node: main process call create calc.exe

อย่างที่คุณจินตนาการได้ ความสามารถของ WMI ไม่ได้จำกัดอยู่เพียงแค่กระบวนการทำงานเท่านั้น หากคุณต้องการอยู่ห่างจากเทคโนโลยี เราขอแนะนำให้คุณทำความคุ้นเคยกับบทความของ Kostyantyn Leontiev ที่เกี่ยวข้องกับ WMI โดยพิจารณาจากวิธีที่คุณสามารถทราบได้ เช่น บทความ

WSH รีโมตสคริปต์

ดังนั้นจึงไม่น่าแปลกใจที่ Windows Script Host จะสามารถเรียกใช้สคริปต์บนคอมพิวเตอร์เครื่องอื่นได้ จริงอยู่ฟังก์ชั่นนี้ไม่ได้รับความนิยมอย่างมากและมันจะดีกว่าสำหรับทุกสิ่งผ่านผู้ที่มีวิธีการเตรียมการมากมายและ natomistity มีโอกาสไม่มาก แต่ให้ฉันบอกคุณทั้งหมดเกี่ยวกับวิธีนี้เพื่อให้คุ้มค่า

นอกจากนี้ ในการรันสคริปต์บนคอมพิวเตอร์เครื่องอื่นด้วยความช่วยเหลือของ WSH เราจำเป็นต้องดำเนินการดังต่อไปนี้:

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

    เปิดใช้งาน WSH Remote Scripting โดยตั้งค่ารายการรีจิสตรีระยะไกลให้เท่ากับ "1" ในรีจิสตรีคีย์ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings

    มีการอธิบายไว้ในบทความฐานความรู้ของ Microsoft หมายเลข 311269 บนระบบที่มี Windows XP คุณอาจต้องใช้คำสั่ง wscript –regserver

    หากไฟร์วอลล์เสียบนคอมพิวเตอร์ จำเป็นต้องเปิดใช้งานการเชื่อมต่อกับ DCOM ยิ่งไปกว่านั้น คุณต้องไม่เพียงแค่ทำงานบนคอมพิวเตอร์เซรามิกเท่านั้น แต่ยังต้องทำงานบนคอมพิวเตอร์ที่คุณต้องการเรียกใช้สคริปต์ด้วย

    สำหรับระบบ Windows XP ที่มี Service Pack 2 คุณอาจต้องเปลี่ยนการตั้งค่าความปลอดภัย DCOM Tse can zrobiti เพื่อขอความช่วยเหลือ นโยบายกลุ่ม. โหนด Computer Configuration \ Windows Settings \ Security Settings \ Local Policies \ Security Options ควรได้รับอนุญาตให้ติดตั้งตามลำดับต่อไปนี้:

    1. DCOM: ข้อ จำกัด การเข้าถึงเครื่องในไวยากรณ์ภาษาข้อกำหนดคำอธิบายความปลอดภัย (SDDL)
      ดูกลุ่ม Anonymous Logon และทุกคนอนุญาต Allow Local และ Allow Remote Access

      DCOM: ข้อจำกัดการเปิดใช้เครื่องในไวยากรณ์ Security Descriptor Definition Language (SDDL)
      ดูกลุ่มผู้ดูแลระบบที่อนุญาต อนุญาตการเปิดใช้ในเครื่อง อนุญาตการเปิดใช้ระยะไกล อนุญาตการเปิดใช้งานในเครื่อง อนุญาตการเปิดใช้งานระยะไกล
      จัดกลุ่มทุกคน – อนุญาตการเปิดตัวในเครื่อง อนุญาตการเปิดใช้งานในเครื่อง

หลังจากขั้นตอนเหล่านี้ทั้งหมด คุณสามารถลองใช้สคริปต์ของคุณบนคอมพิวเตอร์เครื่องอื่นได้

ตัวอย่างของสถานการณ์ที่เป็นเทคโนโลยีแห่งชัยชนะ:

รายการ #2 - WSH รีโมตสคริปต์ (VBScript)

ตั้งค่า objController = CreateObject ("WshController")
ตั้งค่า objRemoteScript = objController.CreateScript("C:\test.vbs", "PC5")WScript.ConnectObject objRemoteScript, "remote_"
objRemoteScript.Execute
ทำในขณะที่ objRemoteScript.Status<> 1
WScript.Sleep 1000
ห่วง
MsgBox "สคริปต์เสร็จสมบูรณ์"
รีโมทย่อย_Error
Dim objError
ตั้งค่า objError = objRemoteScript.Error
WScript.Echo "ข้อผิดพลาด - บรรทัด:" & objError.Line & _
", อักขระ: " & objError.Character & vbCrLf & _
"คำอธิบาย: " & objError.Description
WScript.Quit -1
จบย่อย

ในบรรทัดอื่น เป็นพารามิเตอร์สำหรับฟังก์ชัน CreateScript มีการระบุพาธไปยังไฟล์สคริปต์ ซึ่งจะดำเนินการบนคอมพิวเตอร์ระยะไกลและในแง่ของคอมพิวเตอร์เครื่องนี้

รายงานเกี่ยวกับเทคโนโลยีนี้สามารถอ่านได้ที่บทความ VBScript ขั้นสูงสำหรับ Microsoft Windowsผู้ดูแลระบบ - บทที่ 6: การเขียนสคริปต์ระยะไกล(ดิว. Posilannya).

ตัวกำหนดเวลางาน

ผู้วางแผนสามารถควบคุมได้จากบรรทัดคำสั่งโดยใช้สองยูทิลิตี้ – at.exe และ schtasks.exe ความผิดจากยูทิลิตี้ช่วยให้คุณสามารถแสดงชื่อของคอมพิวเตอร์ระยะไกลของงานและยังช่วยให้คุณเปลี่ยนงานของเรา เอล เราทำได้แค่ดูที่ schtasks.exe เศษส่วนนั้นมีโอกาสมากกว่า

แม้ว่าคำสั่งในคอมพิวเตอร์เครื่องอื่นจะไม่ใช่คุณสมบัติหลักของเครื่องมือวางแผน แต่ก็อนุญาตให้ใช้สถานการณ์ที่แตกต่างกันสองสามอย่างได้ ตัวอย่างเช่น สำหรับโยคะ คุณสามารถเพิ่มการติดตั้งได้ ซอฟต์แวร์ในช่วงเวลาของการหยุดชะงักทุกวัน มิฉะนั้น เนื่องจาก koristuvachs ของคุณจะพบกันในเวลาที่ต่างกัน การเปิดตัวอาจล่าช้าหลังจากช่วงเวลาการร้องเพลงของคอมพิวเตอร์ไม่ทำงาน

schtasks /create /s server6.td.local /tn install /tr \\main\data\install.cmd /sc หนึ่งครั้ง /st 13:00 /ru ระบบ

สิ่งสำคัญคือต้องเข้าใจในนามของบันทึกการนัดหมายบางประเภท สำหรับแอปพลิเคชันนี้ ฉันได้ระบุระบบค่าสำหรับพารามิเตอร์ / ru ดังนั้นสำหรับการติดตั้งบันทึก oblіkovogo ของคอมพิวเตอร์ คุณจะต้องเข้าถึงเพื่ออ่าน โฟลเดอร์ meezhuกับการจำหน่ายซอฟต์แวร์

สำหรับการตัดสินใจที่ดีที่สุด ฉันได้รับอนุญาตให้วางแผนว่าวันนี้เป็นเวลาที่เหมาะสมหรือไม่ และฉันจะเห็นงานเพื่อยืนยันความสำเร็จเท่านั้น ดังนั้น คุณสามารถสร้างไฟล์แบตช์อย่างง่ายที่เริ่มตัวติดตั้งโปรแกรม ตรวจสอบความสมบูรณ์ของโปรแกรม และตรวจสอบว่าติดตั้งโปรแกรมสำเร็จหรือไม่ ราวกับว่าคุณเห็นงานจากผู้วางแผนบนคอมพิวเตอร์ของคุณ ตัวอย่างของไฟล์ดังกล่าว:

รายการ #3 - การติดตั้งโปรแกรมจากงานที่อยู่ห่างไกล (Windows Batch)

msiexec /qn /package\server\share\subinacl.msi
ถ้ามี "c:\program files\Windows Resource Kits\Tools\subinacl.exe" (
subinacl /tn Install_Subinacl /f

WinRM (การจัดการ WS)

WinRM เป็นการนำมาตรฐาน DMTF (Distributed Management Task Force) ของ Microsoft ไปใช้ ซึ่งช่วยให้ระบบใช้บริการเว็บอื่นๆ ได้ ฉันจะไม่เจาะลึกถึงความผูกพันของเทคโนโลยี ฉันจะอธิบายสั้น ๆ ว่าจำเป็นสำหรับภารกิจของฉันอย่างไร

เวอร์ชัน WinRM 1 และมากกว่านั้นรวมอยู่ในสต็อกของระบบปฏิบัติการ โดยเริ่มด้วย Windows Vista และ Windows Server 2008 สำหรับ Windows XP และ Windows Server 2003 คุณสามารถติดตั้ง WinRM เป็นแพ็คเกจ okremy (แพ็คเกจ div.)

เพื่อแก้ไขคอมพิวเตอร์สำหรับการเชื่อมต่อกับพอร์ตมาตรฐานของผู้ชนะใหม่ทำให้สามารถเชื่อมต่อกับระเบียนบนคลาวด์ของผู้ดูแลระบบได้ก็เพียงพอแล้วที่จะใช้คำสั่ง:

winrm quickconfig

หากต้องการ winrm โดยไม่ต้องขอการยืนยัน คุณสามารถเพิ่มปุ่ม -quiet ในการโทรได้ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการปรับละเอียด คุณสามารถดูการปรับละเอียดของ winrm ได้:

winrm ช่วย config

ราวกับว่าเว็บเซิร์ฟเวอร์กำลังทำงานบนคอมพิวเตอร์เซรามิก จะไม่สามารถตั้งค่า WinRM ได้ แม้ว่าพอร์ต HTTP มาตรฐานก็ตาม ในการเชื่อมต่อที่น้อยลงเรื่อย ๆ ได้รับการยอมรับเป็นพิเศษสำหรับคนรุ่นใหม่

เห็นได้ชัดว่าไม่ใช่เรื่องง่ายที่จะพิมพ์คำสั่งด้วยตนเอง ลงในคอมพิวเตอร์สกิน อะไรก็ได้ที่คุณต้องการควบคุม Usі nebkhіdnі nalashtuvannya zrobiti ได้อย่างง่ายดายสำหรับนโยบายกลุ่มช่วยเหลือ ใครต้องการ:

  1. ตั้งค่าบริการ WinRM (การจัดการระยะไกลของ Windows) สตาร์ทอัตโนมัติ
  2. กำหนดค่า Computer Configuration \ Administrative Templates \ Windows Components \ Windows Remote Management (WinRM) \ WinRM Service \ อนุญาตการกำหนดค่าอัตโนมัติขององค์ประกอบนโยบายกลุ่มผู้ฟัง มีความจำเป็นต้องระบุช่วงของที่อยู่ IP ที่อนุญาตการเชื่อมต่อ
  3. ฉันเดาว่าคุณจะต้องอนุญาตการเชื่อมต่อกับพอร์ตว่าง (สำหรับการล็อค 80) ไฟร์วอลล์หน้าต่าง.

ไม่ว่าพอร์ต HTTP (80) จะถูกแทนที่หรือ HTTPS (443) ปริมาณการรับส่งข้อมูลของ WinRM จะถูกเข้ารหัส (แน่นอนว่าคุณไม่ได้เปิดใช้งานตัวเลือกนี้) สำหรับการรับรองความถูกต้องมาตรฐาน โปรโตคอล Kerberos จะถูกแทนที่

เบียร์ที่จะพูดคุยเกี่ยวกับการปักค่อนข้างให้เราก้าวต่อไปโดยไม่เป็นกลางกับความชั่วร้าย หากยูทิลิตี้ winrm อนุญาตให้คุณกำหนดค่าบริการ WinRM เช่นเดียวกับการเปิดใช้งาน WMI เราต้องการ winrs ตัวอักษร RS ในที่นี้หมายถึง Remote Shell WinRS ทำงานเหมือนกับเทคโนโลยี PsExec หรือ WinRM ชื่อของคอมพิวเตอร์ถูกกำหนดด้วยปุ่ม -r และหลังจากคำสั่งถัดไปใหม่ จำเป็นต้อง vikonate แกนของก้นหอก:

winrs -r:Core ver.exe

เศษของ winrs และชนะ cmd.exe เหมือนกับรีโมตเชลล์ในคำสั่งคุณสามารถไปที่การเปลี่ยนแปลงที่อยู่ไกลได้อย่างง่ายดายหรือคุณสามารถใช้คำสั่ง cmd.exe อื่น ๆ :

winrs -r:Core "dir c:\temp > c:\temp\list.txt"

เช่นเดียวกับ PsExec ยูทิลิตี winrs ช่วยให้คุณสามารถเปิดเซสชันแบบโต้ตอบบนคอมพิวเตอร์ระยะไกลได้:

winrs -r:main cmd.exe

ฟังก์ชันนี้คล้ายกับเซสชัน telnet แต่ winrs ดีกว่า telnet และนำทาง PsExec จากมุมมองด้านความปลอดภัยอย่างแน่นอน ไม่ว่าพอร์ต HTTP (80) หรือ HTTPS (443) จะถูกแทนที่ การรับส่งข้อมูลการรับส่งข้อมูลของ WinRM จะถูกเข้ารหัส (ดังนั้น คุณจึงไม่เปิดใช้งานตัวเลือกนี้อย่างชัดเจน) สำหรับการรับรองความถูกต้องมาตรฐาน โปรโตคอล Kerberos จะถูกแทนที่

รีโมต Windows PowerShell 2.0

อยากมีเพื่อน เวอร์ชั่น Windows PowerShell ในขณะที่เขียนบทความยังคงอยู่ในการทดสอบเบต้า เกี่ยวกับความเป็นไปได้ їїในด้านของคำสั่งที่อยู่ห่างไกลออกไปค่อนข้างแตกต่างในขณะนี้ ลองด้วยตัวคุณเอง คุณสามารถคว้าเวอร์ชันเก่า (div. possilannya) หรือที่โกดังของ Windows 7 รุ่นเบต้าหรือ Windows Server 2008 R2

โครงสร้างพื้นฐาน PowerShell Remoting ใช้ WinRM เวอร์ชัน 2.0 ดังนั้นข้อดีทั้งหมดของเทคโนโลยีจึงลดลง เช่น การเข้ารหัสข้อมูลที่ส่ง และความสามารถในการทำงานเบื้องหลังพอร์ต HTTP/HTTPS มาตรฐาน แต่มาเพิ่มความเป็นไปได้ในการย้าย Windows PowerShell กันดีกว่า และมาทำให้มันเป็นไปได้มากขึ้นสำหรับเราที่จะทำงานกับวัตถุ ในขณะนี้ แพ็คเกจ WinRM2.0 ยังคงอยู่ในการทดสอบเบต้าและสามารถดาวน์โหลดได้สำหรับ Windows Vista และ Windows 2008 เท่านั้น ระบบ Windows 7 และ Windows Server 2008R2 จะเริ่มต้นใหม่ทันทีที่ PowerShell 2.0

อัปเดต: จนกว่าจะมีการตีพิมพ์บทความบนเว็บไซต์ขั้นสุดท้าย เวอร์ชันของ PowerShell 2.0 และ WinRM 2.0 พร้อมใช้งานแล้วสำหรับแพลตฟอร์มที่รองรับทั้งหมด ก่อนสต็อกของ Windows Server 2008R2 และ Windows 7 กลิ่นเหม็นนั้นรวมอยู่ในส่วนประกอบระบบที่มองไม่เห็นแล้วและสำหรับ Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 ส่วนประกอบที่จำเป็นคุณสามารถดูแพ็คเกจที่เรียกว่า Windows Management Framework

ก่อนที่จะให้คะแนนความก้าวหน้าทั้งหมด ต้องเปิดใช้งาน PowerShell Remoting บนคอมพิวเตอร์ทั้งแบบแข็งและแบบแข็ง ทำได้ง่ายมากโดยเรียกใช้ cmdlet ( คำสั่ง Windows PowerShell) เปิดใช้งาน-PSRemoting นอกจากนี้ หากคุณเพิ่มปุ่ม -Force จะไม่มีการร้องขอการยืนยันครั้งต่อไป หากจำเป็น cmdlet นี้จะเรียก winrs quickconfig และสร้างการตำหนิในไฟร์วอลล์ Windows ดังนั้นคุณไม่จำเป็นต้องเพิ่มสิ่งอื่นๆ

อีกวิธีหนึ่ง คุณสามารถพิมพ์คำสั่งบนคอมพิวเตอร์เครื่องอื่นได้อย่างง่ายดายโดยใช้ Invoke-Command cmdlet (หรือนามแฝง icm):

Invoke-Command -ComputerName Main -ScriptBlock (การถ่ายโอนข้อมูลอินเตอร์เฟส netsh > c:\ipconfig.txt)

อย่างที่คุณเห็น คุณสามารถเพิ่มคำสั่งลงในรายการได้ในภายหลัง และสำหรับพารามิเตอร์ -ComputerName ให้ระบุชื่อไม่ใช่แค่คอมพิวเตอร์เครื่องเดียว แต่รวมถึงคอมพิวเตอร์หลายเครื่อง ลำดับถัดไปช่วยให้คุณป้อนเวอร์ชันของไฟล์ Explorer.exe จากคอมพิวเตอร์สามเครื่อง

$Command = ((รับรายการ c:\Windows\explorer.exe).VersionInfo.FileVersion)
Invoke-Command - ชื่อคอมพิวเตอร์, Server7, Replica -ScriptBlock $Command

อย่างที่คุณเห็น เป็นไปได้ที่จะถ่ายโอนคำสั่งจำนวนมากในบล็อกเดียว วางผลลัพธ์บนเดสก์ท็อปของการเปลี่ยนแปลง จากนั้นประมวลผลบนเวิร์กสเตชัน โดยใช้ความสามารถของ Windows PowerShell เพื่อทำงานกับวัตถุ

Vtіmความเป็นไปได้ของ PowerShell Remoting บนtіlki pochinayutsya สำหรับความช่วยเหลือเกี่ยวกับ cmdlet Enter-PSSession คุณสามารถไปที่การโต้ตอบ เซสชันของ Windows PowerShell บนคอมพิวเตอร์ระยะไกล คุณสามารถออกจากเซสชันดังกล่าวได้โดยใช้ Exit-PSSession cmdlet หรือเพียงแค่ออกจาก

cmdlet PSSession ใหม่สร้างเซสชันบน คอมพิวเตอร์ระยะไกล, ตัวบ่งชี้สำหรับ yak_ สามารถเปลี่ยนแปลงได้ แล้วส่งต่อเป็นอาร์กิวเมนต์สำหรับ Invoke-Command คุณสามารถเปลี่ยนคำสั่งในแถวบนคอมพิวเตอร์ได้มากเท่าที่เป็นไปได้ ก้นสามารถเห็นได้บนหน้าจอ ซึ่งฉันสามารถเห็นลำดับของคำสั่งในแถวบนคอมพิวเตอร์รูปลอกจากรายการ c:\computers.txt

โปรสุวรรณยา

วิธีการนี้ถูกทบทวนโดยพิจารณาจากรายการปัจจุบัน และเป็นการเรียกสำหรับงานอื่น ๆ แต่ก็ไม่เกี่ยวข้องน้อย หากไม่สามารถมอบหมายการต่ออายุได้ แต่เราได้รับโอกาสที่ดี เราอนุญาตให้คุณอนุญาตให้ coristuvachev ที่ยอดเยี่ยมชนะคำสั่ง ราวกับว่าคุณต้องการสิทธิ์ของผู้ดูแลระบบ และไม่ให้รหัสผ่านของผู้ดูแลระบบ

บ่อยครั้ง ผู้คนพยายามแก้ไขปัญหาเหล่านี้สำหรับยูทิลิตี้เพิ่มเติม เช่น cpau.exe (พลัง div) เพื่อสร้างไฟล์จากบันทึกการดูแลระบบที่เข้ารหัสด้วยรหัสผ่านซึ่งช่วยให้คุณเรียกใช้โปรแกรมเดียวได้ อย่างไรก็ตาม ปัญหาคือสำหรับผู้ที่ต้องการให้รหัสผ่านและการเข้ารหัสต้องถอดรหัสก่อนเรียกใช้โปรแกรมยูทิลิตี้ และคุณสามารถได้รับชัยชนะจากยูทิลิตี้นี้ ซึ่งทำซ้ำอัลกอริธึมการถอดรหัสรหัสผ่านและจดจำมัน เพื่อให้เราสามารถเอาชนะมันเพื่อเปิดใช้โปรแกรมอื่นหรือเอาสิทธิ์เพิ่มเติมออกไป ใช้ได้จริง coristuvachiv ที่โดดเด่น, Scho ไม่vodіyut spetіalnymi znannannym แต่ tim ไม่น้อยเท่าที่เป็นไปได้ ฉันจะชี้แจงอีกครั้งว่านี่ไม่ใช่ยูทิลิตี้เฉพาะ แต่ปัญหาของแนวทางดังกล่าวหมดไป

อีกทางเลือกหนึ่งคือการใช้พารามิเตอร์ /savecred ของยูทิลิตี้ runas เพื่อทำงานให้เสร็จ แต่มีสองปัญหาที่นี่ ในตอนแรกดังที่อธิบายไว้ข้างต้นรหัสผ่านจะถูกบันทึกไว้ในคอมพิวเตอร์ของ koristuvach และต่อมาอาจมีการถอดรหัสลับหากคุณต้องการสิทธิ์ของผู้ดูแลระบบในพื้นที่สำหรับ runas นี้ ในอีกทางหนึ่ง runas จะบันทึกข้อมูลลักษณะที่ปรากฏ โดยไม่ต้องแสดงด้วยคำสั่งเฉพาะ ดังนั้น คุณสามารถเรียกใช้มันด้วยสิทธิ์เช่นคำสั่งนั้น เข้าถึงสิ่งที่คุณต้องการมอบให้คุณ แต่เป็น-yaku іnsh

เพื่อหลีกเลี่ยงปัญหาเหล่านี้ เพื่อให้สามารถพิมพ์คำสั่งเฉพาะได้ คุณสามารถเอาชนะเทคนิคนี้ ซึ่งเรียกว่า "proxing"

ออกกำลังในลักษณะนี้ บนคอมพิวเตอร์ สคริปต์จะได้รับการประมวลผลอย่างถาวรด้วยสิทธิพิเศษระดับสูง ตัวอย่างเช่น ประเภทของไวน์ของเราจะมีการเปิดตัวบันทึกสาธารณะ ซึ่งอาจมีสิทธิ์ของผู้ดูแลระบบในไฟล์เซิร์ฟเวอร์ หลังจากสัญญาณของ koristuvach เรา vikonuvatime หนึ่งฉันจะแต่งตั้งทีมล่วงหน้า สำหรับแต่ละก้น - ปิดไฟล์ทั้งหมด เปิดผ่านบรรทัด

ในการจัดระเบียบระบบ เราวางระบบไว้บนเซิร์ฟเวอร์ เช่น ในโฟลเดอร์ c:\scripts\ command files Server.cmd และ Action.cmd

รายการ #4 - Server.cmd (Windows Batch)

ตั้งค่า trigger=c:\commandShare\trigger.txt
set action=c:\scripts\action.cmd
ตั้งค่า log=c:\scripts\log.txt
:เริ่ม
ถ้ามีอยู่ %trigger% เริ่ม %action% & echo %time% %date%>>%log% & del %trigger%
sleep.exe 5
เริ่มต้น

รายการ #5 - Action.cmd (Windows Batch)

สำหรับ /f "skip=4 tokens=1" %%a y ('net files') ทำไฟล์สุทธิ %%a /close
ทางออก

Server.cmd ตรวจสอบเครื่องหมายของไฟล์ในพื้นที่ร้อง และหลังจากละเว้น ให้รันไฟล์ด้วยคำสั่ง - Action.cmd ฉันเข้าใจว่าพ่อของฉันไม่มีความผิดในการเข้าถึงที่ถูกต้อง การเปิดใช้ Server.cmd โดยอัตโนมัติเมื่อเริ่มต้นคอมพิวเตอร์สามารถจัดระเบียบได้โดยการสร้างงานที่สองในตัวกำหนดตารางเวลา:

schtasks / สร้าง /ru โดเมน\administrator /rp /sc onstart /tn ProxyScript /tr c:\scripts\server.cmd

หลังจากระบุพารามิเตอร์ /ru แล้ว บันทึกทางกายภาพหากมีการแก้ไขสคริปต์ (ผู้ใช้ของเราไม่มีสิทธิ์ผู้ดูแลระบบบนเซิร์ฟเวอร์) จากนั้นหลังจากพารามิเตอร์ /rp รหัสผ่านจะไม่ถูกระบุ - คุณจะเปิดใช้งานเมื่อมีการสร้างงาน ตัวเลือก /sc ช่วยให้คุณระบุได้ว่าเมื่อใดที่สคริปต์จะเปิดตัว ในกรณีของเรา ชื่อคอมพิวเตอร์ /tn และ /tr อนุญาตให้คุณระบุชื่อของงานและไฟล์ที่จะคัดลอก

ตอนนี้ เพื่อให้สคริปต์ส่งสัญญาณทันที เราจะสร้างโฟลเดอร์ c:\commandShare และทำให้พร้อมใช้งานตามต้องการ การเข้าถึงบันทึกในโฟลเดอร์นี้เป็นความรับผิดชอบของแม่เท่านั้นของ coristuvachi ในการรันคำสั่ง

ทันทีที่เพียงพอ คุณจะวาง coristuvachev ลงในไฟล์รูปแบบการทำงาน Run.cmd

รายการ #6 - Run.cmd (Windows Batch)

ทดสอบเสียงสะท้อน > \\เซิร์ฟเวอร์\commandShare\trigger.txt

เมื่อคุณทำเช่นนี้ ไฟล์ \\server\commandShare\trigger.txt จะถูกสร้างขึ้นในชื่อ coristuvach สคริปต์ Server.cmd เมื่อทำเครื่องหมายแล้ว ให้เรียกใช้ไฟล์ Action.cmd บน viconnary ด้วยสิทธิ์ของคุณ เพิ่มรายการในไฟล์ c:\scripts\log.txt เกี่ยวกับชั่วโมงปัจจุบัน แล้วลบ trigger.txt เพื่อให้ คำสั่งไม่รออีกจนกว่าสัญญาณที่น่ารังเกียจของ coristuvach

สคริปต์ Server.cmd ใช้ยูทิลิตี้ Sleep.exe ซึ่งช่วยให้สคริปต์หยุดงานชั่วคราวเป็นเวลาหนึ่งชั่วโมง คุณไม่จำเป็นต้องเข้าไปในโกดังของระบบปฏิบัติการ แต่คุณสามารถดึงข้อมูลจาก Resource Kit Tools และคัดลอกไปยังคอมพิวเตอร์เครื่องใดก็ได้

  • กวดวิชา

มีทฤษฎีขั้นต่ำ ส่วนที่สำคัญที่สุดคือการปฏิบัติ อธิบายวิธีตั้งค่า WinRM วิธีเปลี่ยนโปรไฟล์ อะแดปเตอร์สิ่งทอลายทแยงสคริปต์นี้ให้เพื่อเพิ่มลงใน TrustedHosts ด้วยการกรอง อธิบายความต้องการของโฮสต์ที่เชื่อถือได้ และการเชื่อมต่อจะถูกมองอย่างผิวเผินในระยะไกลเพื่อให้สามารถวางระบบและดูเครื่องจากระยะไกลได้

วิธีที่ง่ายที่สุดในการ nalashtuvati ในระยะทางการจัดการของ vikonati เปิดใช้งาน-PSRemoting ใน oblontsi อาศัยอยู่กับสิทธิของผู้ดูแลระบบ เมื่อมันกลายเป็นเช่นนี้:

  • เริ่มบริการ WinRM (เมื่อเริ่มรีสตาร์ท)
  • บริการ WinRM ไปที่ค่าย - เริ่มอัตโนมัติเมื่อเริ่มต้น
  • จะถูกสร้างขึ้นโดยการดักฟัง WinRM สำหรับ httpการจราจรท่าเรือ 5985 สำหรับที่อยู่ IP ในพื้นที่ทั้งหมด
  • กฎไฟร์วอลล์จะถูกสร้างขึ้นสำหรับผู้ฟัง WinRM ขอแสดงความนับถือรายการนี้จะเสร็จสิ้นโดยเร็วที่สุดหากจากการรวมการ์ดประเภทการรวมเป็น "สาธารณะ" เนื่องจาก การเปิดพอร์ตบนการ์ดดังกล่าวไม่ดี หากคุณได้รับการอภัยเมื่อกำหนดค่า ให้เปลี่ยนโปรไฟล์เครือข่ายด้วย cmdlet Set-NetConnectionProfile แล้วเรียกใช้ Enable-PSRemoting อีกครั้ง หากคุณต้องการการ์ดเชื่อมต่ออินเทอร์เน็ตที่มีโปรไฟล์ "คลังสาธารณะ" ให้เรียกใช้ Enable-PSRemoting ด้วยพารามิเตอร์ -SkipNetworkProfileCheckซึ่งจะมีกฎไฟร์วอลล์ที่สร้างขึ้นน้อยกว่า สายท้องถิ่น.
หากจำเป็น เป็นไปได้ที่จะเชื่อมต่อกับเครื่องที่อยู่ห่างไกลจากเครื่องนั้น ซึ่งจำเป็นต้องมีการควบคุม การรักษาความปลอดภัย Zrobleno tse z metoyu เพื่อเปลี่ยนความเสี่ยงของเซสชันชั่วร้ายของ keruvannya ระยะไกลหรือ DNS ที่พิสูจน์ตัวเองเพื่อแทนที่เครื่องระยะไกลและ zapobigti vykonannya skriptiv บนเครื่องเช่นคุณ primusovo ไม่อนุญาต

หากต้องการยืนยันอีกครั้งว่าคุณสามารถเชื่อมต่อ vikoristovuemo ได้ที่ไหน:
รับรายการ wsman:\localhost\Client\TrustedHosts
เพื่อให้คุณสามารถเชื่อมต่อกับทุกคน
set-item wsman:localhost\client\trustedhosts -value *
หากคุณเปิดใช้งานการเข้าถึงสำหรับ * WinRM ที่ระบุทั้งหมดจะเชื่อมต่อกับเครื่องทั้งหมดโดยไม่ต้องเดินสายใหม่ จำสิ่งที่คุณบอกตัวเองเกี่ยวกับความชั่วร้ายที่อาจเกิดขึ้นในมิติท้องถิ่น กล่าวโดยย่อ ระบุที่อยู่โฮสต์ที่คุณต้องการเชื่อมต่อ จากนั้น WinRM จะอนุญาตที่อยู่หรือชื่ออื่นๆ ทั้งหมด หากมีการจัดการเครื่อง เครื่องควรอยู่ในโดเมนที่เชื่อถือทุกเครื่องในโดเมนนั้น หากไม่ได้อยู่ในโดเมนหรือโดเมนอื่น จำเป็นต้องป้อนที่อยู่ใน TrustedHosts ไม่เช่นนั้นเครื่องจะเชื่อมต่อ เพิ่มให้ตัวเองด้วยรถยนต์จนกว่าเราจะไม่ติด

ได้รับคำสั่งช่วยเหลือแล้ว ฉันได้สร้างใหม่บางส่วนจากสคริปต์
#################################################### # ################################## # เพิ่ม NewHost ในรายการ TrustedHost ด้วยการกรองดังนั้นแถวนี้สามารถอยู่แล้ว # # .\Add-TrustedHost.ps1 192.168.2.1 ####################################### ## ################################################# ### # ## param ($ NewHost = "192.168.2.89") เขียนโฮสต์ "เพิ่มโฮสต์: $NewHost" $prev = (get-item WSMan:\localhost\Client\TrustedHosts).value if (($prev .Contains( $) NewHost)) -eq $false) ( if ($prev -eq "") ( set-item WSMan:\localhost\Client\TrustedHosts -Value "(!LANG:(!LANG:$NewHost)"" } else { set-item WSMan:\localhost\Client\TrustedHosts -Value "$ก่อนหน้า, $NewHost" } } Write-Host "" Write-Host "Now TrustedHosts contains:" (get-item WSMan:\localhost\Client\TrustedHosts).value !} !}
vіnrevіryає chi єบันทึกราวกับว่าไม่ได้เพิ่มอะไรเลยในรายการ การโทรสามารถทำได้จากบรรทัดคำสั่งโดยป้อนที่อยู่หรือชื่อ

Є ryznitsya kazuvati im'ya chi ที่อยู่ หากมีเฉพาะที่อยู่ใน TrustedHosts ให้เปิดเซสชันโดยไม่เห็นชื่อ และ navpaki - หากคุณระบุ im'ya ให้แนบกับที่อยู่ที่มองไม่เห็น โทรเลยเซ

ทำไมมันต่างกัน

Enable-PSRemoting ปล้น diy เพิ่มเติม ลด "winrm quickconfig" Set-WSManQuickConfig cmdlet ทำงานในลักษณะเดียวกับ "winrm quickconfig" Enable-PSRemoting เรียกใช้ Set-WSManQuickConfig หากคุณได้กำหนดค่าระบบ

การเชื่อมต่อระยะไกล
1. เซสชัน 1 ต่อ 1
ตะโกนโดยทีมงาน
Enter-PSSession -ComputerName Test
คุณถอดปลอกหุ้มบนเครื่องระยะไกล คุณสามารถเชื่อมต่อกับตัวคุณเองโดยป้อน localhost เงินกู้ทางเลือกถูกกำหนดด้วยพารามิเตอร์ -หนังสือรับรอง, ออกโดย cmdlet ออก-PSSession

แลกเปลี่ยนดังนี้:

  • ตัดผมอีกอันไม่ได้ - น้อยกว่า 1 เซสชั่น, ระหว่างเซสชั่นมันเป็นไปไม่ได้ที่จะเชื่อมต่อเพิ่มเติม
  • คุณไม่สามารถชนะคำสั่ง yakі mayut ส่วนต่อประสานกราฟิก. หากคุณต้องการให้เปลือกแขวน ให้กด Ctrl + C เพื่อให้มันค้าง
  • คุณไม่สามารถเรียกใช้คำสั่งที่สามารถเรียกใช้คำสั่งของคุณเองได้ เช่น nslookup, netsh
  • คุณสามารถเรียกใช้สคริปต์ได้ เนื่องจากนโยบายอนุญาตให้เรียกใช้บนเครื่องระยะไกลได้
  • ไม่สามารถเข้าร่วมเซสชันแบบโต้ตอบได้ คุณชอบ "เข้าสู่ระบบเครือข่าย" nibi ที่แนบมากับดิสก์ที่ผสาน Tom จะไม่เรียกใช้สคริปต์การเข้าสู่ระบบ และคุณไม่สามารถนำโฟลเดอร์หลักบนเครื่องระยะไกล (อาร์กิวเมนต์ไม่ใช่การแมปโฟลเดอร์หลักและสคริปต์การเข้าสู่ระบบ)
  • คุณไม่สามารถโต้ตอบกับนักข่าวบนเครื่องระยะไกลเพื่อค้นหาไวน์ชนิดเดียวกันได้ อย่ารีบเร่งที่จะแสดงให้คุณเห็นในตอนท้ายหรือตีสนิทกับคุณ
วิธีนี้เป็นวิธีที่ดีที่สุดสำหรับการดำเนินการอย่างง่าย zaishov หลังจากแลกเปลี่ยนเซิร์ฟเวอร์และเชื่อมต่อ หากคุณต้องการกำจัดการเปลี่ยนแปลงในฝูงชน คุณต้องมีการดำเนินการสามครั้ง (หลายปีหรือหลายวัน) คุณต้องมีโอกาสในการบริหารมากขึ้น จากนั้นคุณต้องชนะเทคนิคด้วยการถาม
ความคิดเห็น
วัตถุที่ลอดผ่านตาข่ายจะก่อตัวขึ้นและหยุดมีชีวิต กลิ่นเหม็นเห็นได้จากวิธีการ เจ้าหน้าที่กำลังถูกละทิ้ง Vityagti ob'єktบนรถของคุณ pochakluvat และดันกลับอย่าไป หากจำเป็นต้องเขียนเพิ่มเติม ฉันจะเพิ่มให้ถูกต้อง

2. เซสชัน 1 ต่อกลุ่ม
เรียกใช้คำสั่ง
เราหมายถึงสิ่งที่เราสามารถเห็นในลักษณะต่อไปนี้:
$sb = (คำสั่งสำหรับเครื่องระยะไกลที่แยกจากอาการโคม่า)
โอนไปยังเครื่องระยะไกล Test1 และ Test2
เรียกใช้คำสั่ง - ชื่อคอมพิวเตอร์ Test1, Test2 -ScriptBlock $sb
ในแต่ละครั้งคุณสามารถโยนรถได้ 32 คัน เพื่อเป็นเครดิตทางเลือก พารามิเตอร์ -Credential จะได้รับชัยชนะ

ในการถ่ายโอนสคริปต์อีกครั้งเพื่อแทนที่พารามิเตอร์ -ScriptBlock ให้เขียน -FilePath ในเครื่องระยะไกลไม่จำเป็นต้องเข้าถึงไฟล์ จะมีการจัดเตรียมอะไหล่ ถ่ายโอนผ่าน HTTP และปิดจากด้านนั้น

โปรดจำไว้ว่าจะมีนกเหยี่ยวออสเปรตัวใหม่อยู่ด้านนั้น ดังนั้นสคริปต์ของคุณจะไม่แทนที่ค่าจากคอนโซลของคุณ และสคริปต์ที่เปลี่ยนแปลงสามารถแสดงบนเรือว่างนั้นได้ เพื่อส่งคำแนะนำและสคริปต์สำเร็จรูปพร้อมพารามิเตอร์

สำหรับการเขียน Invoke-Command ใหม่ทั้งหมด คุณต้องเปลี่ยนแถวเป็นบล็อกสคริปต์ ตัวอย่างเช่น คุณมีคำสั่งให้อยู่ในรายการดังกล่าว คุณต้องสร้างแถว แปลงเป็น ScriptBlock และแก้ไขเป็น คอมพิวเตอร์ระยะไกล:
$sb = ::สร้าง($SomeString)
kuda78
บทความไม่มีส่วนโค้ง ช่วงเวลาสำคัญ- การถ่ายโอนพารามิเตอร์จากสคริปต์ไปยังเครื่องระยะไกล

$deployRemote = (
พารามิเตอร์ (
$targetEnvName,
$targetชื่อผู้ใช้)
$Global:ErrorActionPreference = "หยุด"
#…
}

เรียกใช้คำสั่ง -เซสชัน $เซสชัน -ScriptBlock $deployRemote -ArgumentList($targetEnvName, $targetUsername)


การละเลยที่แท้จริงดังนั้น Zrobiv svidomo เพื่อไม่ให้รบกวนพารามิเตอร์และคำอธิบาย ขอขอบคุณ. พารามิเตอร์ -ArgumentList ใช้งานได้กับบล็อกสคริปต์และสคริปต์

3. เซสชั่น
หากมีการสร้างสำเนาของวิสิกจากด้านนั้นเพื่อแขวนอย่างถาวรในหน่วยความจำและคำสั่งจะถูกส่งไปยังมัน เป็นผลให้คุณสามารถเชื่อมต่อกับมันอีกครั้ง เรียกใช้ cenity สำหรับ vikonannya พูดสอดแทรกด้วยสคริปต์ที่แตกต่างกันหรือด้วย koristuvachs ที่แตกต่างกัน ตัวอย่างเช่น คุณมีชุดของสคริปต์ที่ทำงานครั้งละหนึ่งงาน คุณสามารถเชื่อมต่อกับเซสชันระยะไกลหนึ่งเซสชัน เรียกใช้ผลลัพธ์ของการทำงานของคำสั่งส่งต่อ แม่หนึ่งในโมดูล การเปลี่ยนแปลงล่าสุด หยุดสุดท้าย , จนจบ .

เซสชันถูกสร้างขึ้นโดย cmdlet New-PSSession ผลลัพธ์สามารถบันทึกได้ด้วยการเปลี่ยนแปลง
$DC01 = ใหม่-PSSession - ชื่อคอมพิวเตอร์ DC01 $ ตัวควบคุม = ใหม่-PSSession DC01, DC02, DC03
คุณสามารถใช้พารามิเตอร์การเชื่อมต่อเดียวกันกับใน Invoke-Command

จามรี vikoristovuvati:
ยักโช 1 ต่อ 1
เข้าสู่-PSSession -Session $DC01
ยักโช 1 ต่อกลุ่ม
Invoke-Command -Sessions $Controllers -ScriptBlock (get-eventlog -logname security -ใหม่ล่าสุด 50)
คุณสามารถดูว่าคุณสามารถดูเซสชันสำหรับความช่วยเหลือ Get-PSSession ได้หรือไม่ ปิด Remove-PSSession
ปิดทุกรอบ
รับ PSSession | ลบ PSSession
คุณสามารถเชื่อมต่อกับเซสชันด้วยความช่วยเหลือของ Connect-PSSession เชื่อมต่อผ่าน Disconnect-PSSession

Invoke-Command สามารถสร้างเซสชั่นที่ถูกตัดการเชื่อมต่อได้ทันที รันคำสั่งเพื่อปลุกและเชื่อมต่อ หลังจากนั้นคุณสามารถเชื่อมต่อใหม่และเรียกค้นผลลัพธ์ของงานได้ ต่อสู้กับพารามิเตอร์ -Disconnected การดึงผลลัพธ์ผ่าน cmdlet ของรับ-PSSession

เซสชันสามารถปรับแต่งได้อย่างเต็มที่ สามารถสร้างเซสชันด้วยชุดคำสั่ง โมดูล ฯลฯ ได้ เรียกว่าปลายทางที่กำหนดเอง

© 2022 androidas.ru - ทั้งหมดเกี่ยวกับ Android