ตัวเลือกของบรรณาธิการ:

การโฆษณา

บ้าน - บริการ
คำสั่งเดสก์ท็อประยะไกล การเข้าถึงเดสก์ท็อประยะไกล

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

PSExecเป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่มีความสามารถในการเรียกใช้อินเทอร์เฟซบรรทัดคำสั่งแบบโต้ตอบบนระบบ Windows ระยะไกลและเรียกใช้คำสั่งต่างๆ จากระยะไกล

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

ลองดูที่ไวยากรณ์คำสั่ง:

psexec [\\คอมพิวเตอร์[,คอมพิวเตอร์2[,...] | @file][-u ผู้ใช้ [-p รหัสผ่าน]][-n s][-l][-s|-e][-x][-i [เซสชัน]][-c [-f|-v]] [-w ไดเรกทอรี][-d][-<приоритет>][-a n,n,... ] โปรแกรม [อาร์กิวเมนต์]

คอมพิวเตอร์แจ้งให้ PsExec เรียกใช้แอปพลิเคชันบนคอมพิวเตอร์หรือคอมพิวเตอร์ที่ระบุ หากไม่ได้ระบุชื่อคอมพิวเตอร์ โปรแกรม PsExec จะเปิดแอปพลิเคชันบนระบบโลคัล แต่หากระบุเครื่องหมายดอกจัน (\\*) แทนชื่อคอมพิวเตอร์ โปรแกรม PsExec จะเปิดแอปพลิเคชันบนคอมพิวเตอร์ทุกเครื่อง ของโดเมนปัจจุบัน

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

-กโปรเซสเซอร์ที่แอปพลิเคชันสามารถทำงานได้จะถูกคั่นด้วยเครื่องหมายจุลภาค และโปรเซสเซอร์จะมีหมายเลขกำกับโดยเริ่มจาก 1 ตัวอย่างเช่น หากต้องการเรียกใช้แอปพลิเคชันบนโปรเซสเซอร์ตัวที่ 2 และ 4 ให้ป้อน "-a 2,4"

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

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

-eไม่ได้โหลดโปรไฟล์บัญชีที่ระบุ

-ฉโปรแกรมที่ระบุจะถูกคัดลอกไปยังระบบรีโมต แม้ว่าไฟล์ดังกล่าวจะมีอยู่แล้วบนระบบรีโมตก็ตาม

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

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

-nช่วยให้คุณตั้งค่าความล่าช้าในการเชื่อมต่อกับคอมพิวเตอร์ระยะไกล (เป็นวินาที)

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

-สกระบวนการระยะไกลถูกเปิดใช้งานจากบัญชีระบบ

-คุณช่วยให้คุณสามารถระบุชื่อผู้ใช้ที่เป็นทางเลือกเพื่อเข้าสู่ระบบระยะไกล

-vไฟล์ที่ระบุจะถูกคัดลอกไปยังระบบระยะไกลแทนที่จะเป็นไฟล์ที่มีอยู่เฉพาะในกรณีที่หมายเลขเวอร์ชันสูงกว่าหรือใหม่กว่า

-วอนุญาตให้คุณระบุไดเร็กทอรีการทำงาน (พาธภายในระบบรีโมต) สำหรับกระบวนการ

-xแสดงอินเทอร์เฟซผู้ใช้บนเดสก์ท็อป Winlogon (ระบบโลคัลเท่านั้น)

-ลำดับความสำคัญ(ลำดับความสำคัญ) ช่วยให้คุณสามารถตั้งค่าลำดับความสำคัญที่แตกต่างกันสำหรับกระบวนการ: -ต่ำ (ต่ำ), -ต่ำกว่าปกติ (ต่ำกว่าค่าเฉลี่ย), -สูงกว่าปกติ (สูงกว่าค่าเฉลี่ย), -สูง (สูง) หรือ -เรียลไทม์ (เรียลไทม์)

โปรแกรมชื่อของโปรแกรมที่จะเปิดตัว

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

ตัวอย่างการทำงานเป็นทีม PSEXEC:

1) ในการเปิดใช้บรรทัดคำสั่งของคอมพิวเตอร์เครื่องอื่น คุณต้องป้อน
เซ็กส์เซค\\<имя компьюетра>คำสั่ง

ตัวอย่างเช่น:
psexec\\WIN782 cmd



หลังจากนั้นคุณสามารถป้อนคำสั่งที่คุณต้องการได้

2) เพื่อรันโปรแกรมใดๆ (in ในตัวอย่างนี้ test.exe) บนคอมพิวเตอร์ระยะไกลคุณต้องเรียกใช้คำสั่ง (คำสั่งนี้จะคัดลอกโปรแกรม test.exe ไปยังระบบระยะไกลและรันแบบโต้ตอบ)

เซ็กส์เซค\\<имя компьютера>-c test.exe

ตัวอย่างเช่น:
เซ็กส์เซค\\WIN782-c test.exe

3) หากโปรแกรมดังกล่าวได้รับการติดตั้งบนระบบระยะไกลแล้วและไม่ได้อยู่ในไดเร็กทอรีระบบ ให้ระบุเส้นทางแบบเต็มไปยังโปรแกรมนี้

psexec\\WIN782 c:\temp\test.exe

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

เนื่องจากปัญหานี้ได้รับความนิยม จึงมีหลายวิธีในการแก้ปัญหา เริ่มต้นจากนโยบายกลุ่ม (ซึ่งคุณสามารถใช้สคริปต์เข้าสู่ระบบหรือเริ่มต้นการทำงานเพื่อจุดประสงค์นี้ได้) ไปจนถึงระบบการจัดการที่มีประสิทธิภาพ เช่น System Center Essentials หรือ System Center Configuration Manager แต่ในบทความนี้ฉันต้องการพิจารณาวิธีการที่ใช้ได้ทันทีจากบรรทัดคำสั่งหรือไฟล์สคริปต์และไม่ต้องการด้วย ก่อนการติดตั้งตัวแทนและความวุ่นวายอื่น ๆ อย่างไรก็ตาม แน่นอนว่ายังมีข้อกำหนดเบื้องต้นบางประการอยู่ ตัวอย่างเช่น คุณต้องมีสิทธิ์ระดับผู้ดูแลระบบบนคอมพิวเตอร์ที่คุณต้องการเรียกใช้คำสั่ง (ยกเว้นในสถานการณ์ "พร็อกซี" แต่จะเพิ่มเติมในภายหลัง)

PSExec.exe

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

การใช้ PsExec นั้นง่ายมาก ตัวอย่างเช่น หากต้องการเรียกใช้ 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 ซึ่งก็คือ บริการวินโดวส์- ก่อนที่จะดำเนินการคำสั่ง PsExec จะคลายทรัพยากรนี้ลงในการดูแลระบบที่ซ่อนอยู่ โฟลเดอร์ที่ใช้ร่วมกันคอมพิวเตอร์ระยะไกลไปยังไฟล์: \\ComputerName\Admin$\system32\psexesvc.exe หากคุณระบุโดยใช้สวิตช์ -c ที่คุณต้องการคัดลอกไฟล์ปฏิบัติการไปยังระบบนี้ ไฟล์เหล่านั้นจะถูกคัดลอกไปยังโฟลเดอร์นี้ด้วย

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

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

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

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

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

ที่นี่ฉันระบุ cmd.exe เป็นกระบวนการที่จะเปิดตัว และส่งคำสั่งที่จำเป็นเป็นอาร์กิวเมนต์ นี่เป็นสิ่งจำเป็นหากคุณจำเป็นต้องใช้ตัวแปรสภาพแวดล้อมของคอมพิวเตอร์ระยะไกลหรือคำสั่ง cmd.exe ในตัว เช่น " > " เพื่อเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ วิธีการสร้างไม่ได้รอให้กระบวนการเสร็จสิ้นและไม่ส่งคืนผลลัพธ์ แต่จะบอกเราถึงตัวระบุ – 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: การเรียกกระบวนการหลักสร้าง calc.exe

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

การเขียนสคริปต์ระยะไกล WSH

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

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

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

    อนุญาตการเขียนสคริปต์ระยะไกล WSH โดยการสร้างใน รีจิสทรีของระบบพารามิเตอร์สตริงระยะไกลเท่ากับ "1" ในคีย์รีจิสทรี HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings

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

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

    บนระบบ Windows XP ที่มี Service Pack 2 และสูงกว่า คุณต้องเปลี่ยนการตั้งค่าความปลอดภัยของ DCOM ซึ่งสามารถทำได้โดยใช้ นโยบายกลุ่ม- ในโหนดตัวเลือก Policies\Security Configuration\Windows Settings\Security Settings\Local ของคอมพิวเตอร์ สิทธิ์ควรตั้งค่าดังนี้:

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

      DCOM: ข้อจำกัดในการเปิดใช้เครื่องในไวยากรณ์ภาษาข้อกำหนดตัวอธิบายความปลอดภัย (SDDL)
      ให้สิทธิ์กลุ่มผู้ดูแลระบบ อนุญาตการเปิดใช้งานภายในเครื่อง อนุญาตการเปิดใช้งานระยะไกล อนุญาตการเปิดใช้งานภายในเครื่อง อนุญาตการเปิดใช้งานระยะไกล
      กลุ่มทุกคน - อนุญาตการเปิดตัวในเครื่อง อนุญาตการเปิดใช้งานในเครื่อง

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

สคริปต์ตัวอย่างที่ใช้เทคโนโลยีนี้:

รายการ #2 – การเขียนสคริปต์ระยะไกล WSH (VBScript)

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

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

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

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

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

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

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

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

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

รายการหมายเลข 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 และ วินโดวส์เซิร์ฟเวอร์ 2008 สำหรับ Windows XP และ Windows Server 2003 คุณสามารถติดตั้ง WinRM เป็นแพ็คเกจแยกต่างหากได้ (ดูลิงก์)

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

winrm กำหนดค่าด่วน

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

winrm ช่วยกำหนดค่า

หากเว็บเซิร์ฟเวอร์ทำงานบนคอมพิวเตอร์ที่ได้รับการจัดการ WinRM จะไม่รบกวนการทำงานของคอมพิวเตอร์ แต่อย่างใด แม้ว่าจะใช้พอร์ต HTTP มาตรฐานตามค่าเริ่มต้นก็ตาม มันจะสกัดกั้นการเชื่อมต่อที่มีไว้สำหรับมันโดยเฉพาะเท่านั้น

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

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

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

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

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 ระยะไกล

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

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

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

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

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

เรียกใช้คำสั่ง - ชื่อคอมพิวเตอร์หลัก -ScriptBlock (ดัมพ์อินเทอร์เฟซ netsh > c:\ipconfig.txt)

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

$Command = ((รับรายการ c:\Windows\explorer.exe).VersionInfo.FileVersion)
เรียกใช้คำสั่ง - ชื่อคอมพิวเตอร์หลัก, Server7, แบบจำลอง -ScriptBlock $Command


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

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

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


การมอบฉันทะ

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

บ่อยครั้งที่ผู้คนแก้ไขปัญหาดังกล่าวโดยใช้ยูทิลิตี้เช่น cpau.exe (ดูลิงก์) ซึ่งสร้างไฟล์ด้วยรหัสผ่านที่เข้ารหัสสำหรับบัญชีผู้ดูแลระบบที่อนุญาตให้คุณเรียกใช้โปรแกรมเฉพาะ อย่างไรก็ตามปัญหาคือแม้ว่ารหัสผ่านจะถูกเข้ารหัส แต่ยูทิลิตี้นี้จะต้องถอดรหัสก่อนที่จะรันโปรแกรม ดังนั้นผู้ใช้สามารถใช้ยูทิลิตี้ที่ทำซ้ำอัลกอริธึมการถอดรหัสรหัสผ่านและค้นหาซึ่งสามารถใช้เพื่อเปิดโปรแกรมอื่นหรือรับสิทธิพิเศษเพิ่มเติม แน่นอนว่าในทางปฏิบัตินี่ค่อนข้างยากสำหรับ ผู้ใช้ทั่วไปที่ไม่มีความรู้พิเศษแต่ก็เป็นไปได้ทีเดียว ฉันขอชี้แจงอีกครั้งนี่ไม่ใช่ปัญหากับยูทิลิตี้เฉพาะ แต่เป็นปัญหากับแนวทางนี้โดยทั่วไป

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

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

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

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

รายการหมายเลข 4 – Server.cmd (ชุด Windows)

ตั้งค่า trigger=c:\commandShare\trigger.txt
ตั้งค่า action=c:\scripts\action.cmd
ตั้งค่า log=c:\scripts\log.txt
:เริ่ม
ถ้ามี %ทริกเกอร์% เริ่มต้น %การกระทำ% & echo %เวลา% %วันที่%>>%log% และเดล %ทริกเกอร์%
sleep.exe5
เริ่มได้เลย

รายการหมายเลข 5 – Action.cmd (ชุด Windows)

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

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

schtasks / สร้าง /ru โดเมน\ผู้ดูแลระบบ /rp /sc onstart /tn ProxyScript /tr c:\scripts\server.cmd

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

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

หลังจากนี้ ผู้ใช้จะวางไฟล์ Run.cmd บนเดสก์ท็อปก็เพียงพอแล้ว

รายการหมายเลข 6 – Run.cmd (ชุด Windows)

การทดสอบเสียงสะท้อน > \\server\commandShare\trigger.txt

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

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

ใน Windows เวอร์ชันก่อนหน้าของเซิร์ฟเวอร์สำหรับ การควบคุมระยะไกลผู้ดูแลระบบเซิร์ฟเวอร์ต้องใช้ Terminal Services ข้อเสียของโซลูชันนี้คือความจำเป็นในการปรับใช้ Terminal Services แม้ว่าผู้ดูแลระบบต้องการการเชื่อมต่อระยะไกลเพียงครั้งเดียวเพื่อดำเนินงานการดูแลระบบตามปกติก็ตาม Windows XP และ Windows Server 2003 มีมาตรฐาน เดสก์ท็อประยะไกลสำหรับการดูแลระบบหรือเพียงแค่ Remote Desktop ซึ่งช่วยให้คุณสามารถเชื่อมต่อจากระยะไกลและดำเนินการจัดการเซิร์ฟเวอร์ที่จำเป็น กลไกนี้ขึ้นอยู่กับบริการเทอร์มินัลและรองรับการเชื่อมต่อระยะไกลสองรายการพร้อมกัน (ใน Windows XP - หนึ่งรายการ) ผู้ดูแลระบบสามารถดูแลเซิร์ฟเวอร์ทั้งหมดภายใต้การควบคุมจากเวิร์กสเตชันใดก็ได้ การควบคุมหน้าต่างเซิร์ฟเวอร์ 2003 เชื่อมต่อกับพวกเขาจากระยะไกล

บันทึก
กลไกเดสก์ท็อประยะไกลสำหรับการดูแลระบบโดยพื้นฐานแล้วจะคล้ายกับโหมดการดูแลระบบระยะไกลที่ Windows 2000 Terminal Services รองรับ ใน Windows Server 2003 งาน การดูแลระบบระยะไกลลูกบอลถูกแยกออกจากบริการเทอร์มินัลและนำไปใช้ภายในกลไกที่แยกจากกัน การแยกกลไกการดูแลระบบระยะไกลออกจากบริการเทอร์มินัลทำให้สามารถลดภาระบนเซิร์ฟเวอร์ให้เหลือน้อยที่สุดในสถานการณ์ที่จำเป็นต้องจัดการเซิร์ฟเวอร์จากคอมพิวเตอร์เครื่องอื่นเท่านั้น

Windows XP และ Windows Server 2003 ยังมีคุณสมบัติ Remote Assistance ที่อนุญาตให้ผู้ใช้เริ่มการเข้าถึงคอมพิวเตอร์และรับความช่วยเหลือในสถานการณ์ที่ยากลำบาก (ดูหัวข้อถัดไป)

บันทึก
ตามค่าเริ่มต้น Remote Desktop และ Remote Assistance จะถูกปิดใช้งาน

นอกจากนี้ หากมีการติดตั้งเว็บเซิร์ฟเวอร์บนคอมพิวเตอร์ที่ใช้ Windows XP หรือ Windows Server 2003 โดยเป็นส่วนหนึ่งของ Internet Information Services (IIS) จากนั้นคุณสามารถเข้าถึงระบบ Windows XP หรือ Windows Server 2003 ใด ๆ ที่อยู่ในคอมพิวเตอร์เครื่องนั้นได้จากคอมพิวเตอร์เครื่องนี้ เดียวกัน เครือข่ายท้องถิ่นจากเว็บเบราว์เซอร์ ( อินเทอร์เน็ตเอ็กซ์พลอเรอร์ 4.0 และสูงกว่า) ทำงานบนระบบปฏิบัติการใดก็ได้ คุณลักษณะนี้ช่วยให้สามารถเปิดเบราว์เซอร์บนคอมพิวเตอร์ที่ใช้พลังงานต่ำซึ่งใช้ Windows 95 และโดยการป้อนชื่อของระบบ Windows Server 2003 ระยะไกลที่ใช้โปรเซสเซอร์ที่ทรงพลังบางตัวให้ทำงานในนั้นได้ โหมดเต็มหน้าจอ.
เซสชันการเข้าถึงระยะไกลทั้งหมดได้รับการเข้ารหัสเพื่อป้องกันการเข้าถึงข้อมูลและระบบโดยไม่ได้รับอนุญาต: โปรโตคอล RDP ที่ใช้ได้รับการเข้ารหัสโดยใช้อัลกอริทึม RC4

อนุญาตการเข้าถึงระยะไกล

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

ข้าว. 10.9. หน้าต่างสำหรับจัดการฟังก์ชันเดสก์ท็อประยะไกลและความช่วยเหลือระยะไกล

ข้าว. 10.10. ผู้ใช้ที่ระบุในหน้าต่างนี้จะได้รับอนุญาตให้เข้าถึงเดสก์ท็อปคอมพิวเตอร์จากระยะไกล


ข้าว. 10.11. คำเตือนว่าบัญชีที่ไม่มีรหัสผ่านไม่สามารถใช้เพื่อเข้าถึงคอมพิวเตอร์ของคุณจากระยะไกลได้

ในการเริ่มต้นเซสชันการเข้าถึงระยะไกล ให้ใช้ยูทิลิตีการเชื่อมต่อเดสก์ท็อประยะไกล (ซึ่งเปิดใช้งานจากด้านล่าง เมนูเริ่ม- โปรแกรมทั้งหมด | อุปกรณ์เสริม | การสื่อสารหรือใช้คำสั่ง mstsc จากบรรทัดคำสั่ง) ป้อนชื่อหรือที่อยู่ IP ของคอมพิวเตอร์ระยะไกลแล้วคลิกปุ่มเชื่อมต่อ (รูปที่ 10.12) - และหลังจากนั้นสักครู่คุณจะเห็นหน้าต่างเชิญให้คุณลงทะเบียนในระบบระยะไกล!

ความสนใจ

ข้าว. 10.11. คำเตือนว่าบัญชีที่ไม่มีรหัสผ่านไม่สามารถใช้เพื่อเข้าถึงคอมพิวเตอร์ของคุณจากระยะไกลได้

การเริ่มต้นและกำหนดค่าเซสชันการเข้าถึงระยะไกล

ในการเริ่มต้นเซสชันการเข้าถึงระยะไกล ให้ใช้ยูทิลิตีการเชื่อมต่อเดสก์ท็อประยะไกล (สามารถเปิดใช้งานได้จากเมนูย่อยเริ่ม | โปรแกรมทั้งหมด | อุปกรณ์เสริม | การสื่อสาร หรือใช้คำสั่ง mstsc จากบรรทัดคำสั่ง) ป้อนชื่อหรือที่อยู่ IP ของคอมพิวเตอร์ระยะไกลแล้วคลิกปุ่มเชื่อมต่อ (รูปที่ 10.12) - และหลังจากนั้นสักครู่คุณจะเห็นหน้าต่างเชิญให้คุณลงทะเบียนในระบบระยะไกล!



ข้าว. 10.12. จากหน้าต่างนี้ คุณสามารถเริ่มต้นเซสชันกับคอมพิวเตอร์ระยะไกลได้

ความสนใจ

ในระบบ Windows XP เมื่อคุณเข้าสู่ระบบโดยใช้ Remote Desktop ผู้ใช้ปัจจุบันจะถูก "เตะ" ออกจากระบบ แต่เซสชันปัจจุบันจะไม่ถูกปิด หากผู้ใช้ระยะไกลเข้าสู่ระบบด้วยชื่อผู้ใช้ที่ลงทะเบียนแล้ว เขาจะได้รับสภาพแวดล้อมการทำงาน - เปิดหน้าต่าง, โปรแกรมที่กำลังรันอยู่- ผู้ใช้รายนี้ซึ่งสามารถเข้าสู่ระบบอีกครั้งและผลัก "เอเลี่ยน" ออกไปได้ เฉพาะเมื่อใช้ความช่วยเหลือระยะไกลเท่านั้นที่ผู้ใช้สองคนจะสามารถทำงานพร้อมกันในเซสชันเดียวได้ สิ่งนี้ไม่ได้เกิดขึ้นใน Windows Server 2003 เนื่องจากอนุญาตให้มีเซสชันสองเซสชันสำหรับการดูแลระบบระยะไกล อย่างไรก็ตาม หากคุณใช้คำสั่ง mstsc /console คุณจะได้รับโหมดการทำงานแบบเดียวกับใน Windows XP นั่นคือด้วย "push"
ในหน้าต่างการเชื่อมต่อเดสก์ท็อประยะไกล ให้คลิกปุ่มตัวเลือก และตรวจสอบแท็บทั้งหมดที่มีการกำหนดพารามิเตอร์การเชื่อมต่อระยะไกลอย่างละเอียด ตัวอย่างเช่นคุณสามารถตั้งค่าขนาดหน้าจอความลึกของสี (สูงสุด 24 บิต) ความเร็วการเชื่อมต่อ ฯลฯ โปรดใส่ใจกับแท็บทรัพยากรท้องถิ่น (รูปที่ 10.13)

ข้าว. 10.13. แท็บที่ควบคุมการกำหนดอุปกรณ์ในเครื่องใหม่

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

ข้าว. 10.14. การกำหนดค่าพารามิเตอร์การเข้าถึงระยะไกลขึ้นอยู่กับความเร็วของช่องทางการสื่อสาร

หากต้องการสลับหน้าต่างเซสชันจากโหมดเต็มหน้าจอเป็นหน้าจอขนาดคงที่และในทางกลับกัน ให้ใช้ปุ่ม ++

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


ข้าว. 10.15. หน้าต่างสแน็ปอินเดสก์ท็อประยะไกลพร้อมเซสชันการเข้าถึงระยะไกลสองเซสชันพร้อมกัน

ออกจากระบบเซสชัน

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

  • คุณสามารถปิดคอมพิวเตอร์ได้โดยเลือกตัวเลือก Shut down ในหน้าต่าง Shut Down Windows
  • คุณสามารถออกจากระบบได้โดยเลือกตัวเลือก ออกจากระบบ
  • คุณสามารถขัดจังหวะเซสชันปัจจุบันได้โดยเลือกตัวเลือกตัดการเชื่อมต่อ - ในกรณีนี้เมื่อคุณเชื่อมต่อกับคอมพิวเตอร์เครื่องนี้อีกครั้งด้วยชื่อที่ใช้ก่อนหน้านี้ผู้ดูแลระบบจะได้รับสภาพแวดล้อมการทำงานแบบเดียวกัน (เปิดหน้าต่างและโปรแกรมที่รันอยู่) ที่เขา "ทิ้งไว้" เมื่อตัดการเชื่อมต่อ จากเซสชัน

การเข้าถึงระยะไกลผ่านทางอินเทอร์เน็ต

หากต้องการเข้าถึงคอมพิวเตอร์ของคุณผ่านทางอินเทอร์เน็ต ให้ป้อน http:// ในช่องที่อยู่ของเบราว์เซอร์<имя_cepвepa>/TSWeb โดยที่ server_name คือชื่อ DNS เว็บเซิร์ฟเวอร์(คอมพิวเตอร์ที่ติดตั้ง IIS) หรือที่อยู่ IP


ข้าว. 10.16. หน้าต่างสำหรับการเชื่อมต่ออินเทอร์เน็ตกับคอมพิวเตอร์ระยะไกล

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

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

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


ข้าว. 10.17. คำเตือนเกี่ยวกับการติดตั้งส่วนประกอบ ActiveX บนเครื่องคอมพิวเตอร์

หลังจากนั้นจะมีการเชื่อมต่อกับคอมพิวเตอร์ (เป้าหมาย) ที่เลือกและปรากฏขึ้น หน้าต่างแบบดั้งเดิมการลงทะเบียน ในรูป 10.18 แสดงหน้าต่างตัวอย่าง อินเทอร์เน็ตเบราว์เซอร์ Explorer ซึ่งแสดงเซสชันบนคอมพิวเตอร์ระยะไกล โปรดทราบว่าหน้าต่างที่อยู่จะแสดงที่อยู่ IP ของคอมพิวเตอร์เครื่องหนึ่ง (ซึ่งเราเข้าสู่เครือข่าย) และการเชื่อมต่อกับคอมพิวเตอร์เครื่องอื่น - ที่อยู่จะแสดงที่ด้านล่างของหน้าจอ เราขอเตือนคุณว่าสามารถรับรูปภาพดังกล่าวได้ในระบบปฏิบัติการใด ๆ ที่ติดตั้งอินเทอร์เน็ต เวอร์ชันนักสำรวจ 4.0 และสูงกว่า ในโหมดเต็มหน้าจอ แผงเบราว์เซอร์จะไม่แสดงเลย และเราจะเห็นเฉพาะเดสก์ท็อปของคอมพิวเตอร์ระยะไกลเท่านั้น

ข้าว. 10.17. คำเตือนเกี่ยวกับการติดตั้งส่วนประกอบ ActiveX บนเครื่องคอมพิวเตอร์

หลังจากนั้น จะมีการเชื่อมต่อกับคอมพิวเตอร์ (เป้าหมาย) ที่เลือก และหน้าต่างการลงทะเบียนแบบเดิมจะปรากฏขึ้น ในรูป ตามตัวอย่าง รูปที่ 10.18 แสดงหน้าต่างเบราว์เซอร์ Internet Explorer ที่แสดงเซสชันบนคอมพิวเตอร์ระยะไกล โปรดทราบว่าหน้าต่างที่อยู่จะแสดงที่อยู่ IP ของคอมพิวเตอร์เครื่องหนึ่ง (ซึ่งเราเข้าสู่เครือข่าย) และการเชื่อมต่อกับคอมพิวเตอร์เครื่องอื่น - ที่อยู่จะแสดงที่ด้านล่างของหน้าจอ เราขอเตือนคุณว่าสามารถรับรูปภาพดังกล่าวได้ในระบบปฏิบัติการใด ๆ ที่ติดตั้ง Internet Explorer เวอร์ชัน 4.0 ขึ้นไป ในโหมดเต็มหน้าจอ แผงเบราว์เซอร์จะไม่แสดงเลย และเราจะเห็นเฉพาะเดสก์ท็อปของคอมพิวเตอร์ระยะไกลเท่านั้น



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

PSExecเป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่มีความสามารถในการเรียกใช้อินเทอร์เฟซบรรทัดคำสั่งแบบโต้ตอบบนระบบ Windows ระยะไกลและเรียกใช้คำสั่งต่างๆ จากระยะไกล

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

ลองดูที่ไวยากรณ์คำสั่ง:

psexec [\\คอมพิวเตอร์[,คอมพิวเตอร์2[,...] | @file][-u ผู้ใช้ [-p รหัสผ่าน]][-n s][-l][-s|-e][-x][-i [เซสชัน]][-c [-f|-v]] [-w ไดเรกทอรี][-d][-<приоритет>][-a n,n,... ] โปรแกรม [อาร์กิวเมนต์]

คอมพิวเตอร์แจ้งให้ PsExec เรียกใช้แอปพลิเคชันบนคอมพิวเตอร์หรือคอมพิวเตอร์ที่ระบุ หากไม่ได้ระบุชื่อคอมพิวเตอร์ โปรแกรม PsExec จะเปิดแอปพลิเคชันบนระบบโลคัล แต่หากระบุเครื่องหมายดอกจัน (\\*) แทนชื่อคอมพิวเตอร์ โปรแกรม PsExec จะเปิดแอปพลิเคชันบนคอมพิวเตอร์ทุกเครื่อง ของโดเมนปัจจุบัน

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

-กโปรเซสเซอร์ที่แอปพลิเคชันสามารถทำงานได้จะถูกคั่นด้วยเครื่องหมายจุลภาค และโปรเซสเซอร์จะมีหมายเลขกำกับโดยเริ่มจาก 1 ตัวอย่างเช่น หากต้องการเรียกใช้แอปพลิเคชันบนโปรเซสเซอร์ตัวที่ 2 และ 4 ให้ป้อน "-a 2,4"

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

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

-eไม่ได้โหลดโปรไฟล์บัญชีที่ระบุ

-ฉโปรแกรมที่ระบุจะถูกคัดลอกไปยังระบบรีโมต แม้ว่าไฟล์ดังกล่าวจะมีอยู่แล้วบนระบบรีโมตก็ตาม

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

-ลเมื่อกระบวนการเริ่มต้น ผู้ใช้จะได้รับสิทธิ์แบบจำกัด (สิทธิ์ของกลุ่มผู้ดูแลระบบจะถูกแทนที่ และผู้ใช้จะได้รับเฉพาะสิทธิ์ที่กำหนดให้กับกลุ่มผู้ใช้เท่านั้น) ใน Windows Vista กระบวนการเริ่มต้นจากความน่าเชื่อถือในระดับต่ำ

-nช่วยให้คุณตั้งค่าความล่าช้าในการเชื่อมต่อกับคอมพิวเตอร์ระยะไกล (เป็นวินาที)

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

-สกระบวนการระยะไกลถูกเปิดใช้งานจากบัญชีระบบ

-คุณช่วยให้คุณสามารถระบุชื่อผู้ใช้ที่เป็นทางเลือกเพื่อเข้าสู่ระบบระยะไกล

-vไฟล์ที่ระบุจะถูกคัดลอกไปยังระบบระยะไกลแทนที่จะเป็นไฟล์ที่มีอยู่เฉพาะในกรณีที่หมายเลขเวอร์ชันสูงกว่าหรือใหม่กว่า

-วอนุญาตให้คุณระบุไดเร็กทอรีการทำงาน (พาธภายในระบบรีโมต) สำหรับกระบวนการ

-xแสดงอินเทอร์เฟซผู้ใช้บนเดสก์ท็อป Winlogon (ระบบโลคัลเท่านั้น)

-ลำดับความสำคัญ(ลำดับความสำคัญ) ช่วยให้คุณสามารถตั้งค่าลำดับความสำคัญที่แตกต่างกันสำหรับกระบวนการ: -ต่ำ (ต่ำ), -ต่ำกว่าปกติ (ต่ำกว่าค่าเฉลี่ย), -สูงกว่าปกติ (สูงกว่าค่าเฉลี่ย), -สูง (สูง) หรือ -เรียลไทม์ (เรียลไทม์)

โปรแกรมชื่อของโปรแกรมที่จะเปิดตัว

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

ตัวอย่างการทำงานเป็นทีม PSEXEC:

1) ในการเปิดใช้บรรทัดคำสั่งของคอมพิวเตอร์เครื่องอื่น คุณต้องป้อน
เซ็กส์เซค\\<имя компьюетра>คำสั่ง

ตัวอย่างเช่น:
psexec\\WIN782 cmd



หลังจากนั้นคุณสามารถป้อนคำสั่งที่คุณต้องการได้

2) ในการรันโปรแกรมใด ๆ (ในตัวอย่างนี้คือ test.exe) บนคอมพิวเตอร์ระยะไกล คุณต้องรันคำสั่ง (คำสั่งนี้จะคัดลอกโปรแกรม test.exe ไปยังระบบระยะไกลและดำเนินการแบบโต้ตอบ)

เซ็กส์เซค\\<имя компьютера>-c test.exe

ตัวอย่างเช่น:
เซ็กส์เซค\\WIN782-c test.exe

3) หากโปรแกรมดังกล่าวได้รับการติดตั้งบนระบบระยะไกลแล้วและไม่ได้อยู่ในไดเร็กทอรีระบบ ให้ระบุเส้นทางแบบเต็มไปยังโปรแกรมนี้

psexec\\WIN782 c:\temp\test.exe

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

เนื่องจากปัญหานี้ได้รับความนิยม จึงมีหลายวิธีในการแก้ปัญหา เริ่มต้นจากนโยบายกลุ่ม (ซึ่งคุณสามารถใช้สคริปต์เข้าสู่ระบบหรือเริ่มต้นการทำงานเพื่อจุดประสงค์นี้ได้) ไปจนถึงระบบการจัดการที่มีประสิทธิภาพ เช่น System Center Essentials หรือ System Center Configuration Manager แต่ในบทความนี้ ฉันต้องการดูวิธีการที่ใช้ได้ทันทีจากบรรทัดคำสั่งหรือไฟล์สคริปต์ และยังไม่จำเป็นต้องติดตั้งเอเจนต์ก่อนและความยุ่งยากอื่น ๆ อย่างไรก็ตาม แน่นอนว่ายังมีข้อกำหนดเบื้องต้นบางประการอยู่ ตัวอย่างเช่น คุณต้องมีสิทธิ์ระดับผู้ดูแลระบบบนคอมพิวเตอร์ที่คุณต้องการเรียกใช้คำสั่ง (ยกเว้นในสถานการณ์ "พร็อกซี" แต่จะเพิ่มเติมในภายหลัง)

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

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

psexec\\main ipconfig /flushdns

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

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

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

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

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

psexec -i \\main winver.exe

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

psexec @c:\comps.txt systeminfo.exe

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

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

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

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

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

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

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

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

ที่นี่ฉันระบุ cmd.exe เป็นกระบวนการที่จะเปิดตัว และส่งคำสั่งที่จำเป็นเป็นอาร์กิวเมนต์ นี่เป็นสิ่งจำเป็นหากคุณจำเป็นต้องใช้ตัวแปรสภาพแวดล้อมของคอมพิวเตอร์ระยะไกลหรือคำสั่ง cmd.exe ในตัว เช่น ">" เพื่อเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ วิธีการสร้างไม่ได้รอให้กระบวนการเสร็จสิ้นและไม่ส่งคืนผลลัพธ์ แต่จะบอกเราถึงตัวระบุ – 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: การเรียกกระบวนการหลักสร้าง calc.exe

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

การเขียนสคริปต์ระยะไกล WSH

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

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

สิทธิ์ของผู้ดูแลระบบบนคอมพิวเตอร์ระยะไกล สิ่งนี้ดำเนินไปโดยไม่บอกกล่าว และจำเป็นสำหรับวิธีการเปิดใช้อื่นๆ เกือบทั้งหมดที่ระบุไว้ในบทความนี้ เปิดใช้งานการเขียนสคริปต์ระยะไกล WSH โดยการสร้างสตริงพารามิเตอร์ระยะไกลในรีจิสทรีของระบบเท่ากับ “1” ในคีย์รีจิสทรี HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings เนื่องจากข้อผิดพลาดที่อธิบายไว้ในบทความฐานความรู้ของ Microsoft หมายเลข 311269 บนระบบที่มี Windows XP คุณอาจต้องเรียกใช้คำสั่ง wscript –regserver หากคอมพิวเตอร์ใช้ไฟร์วอลล์ จะต้องอนุญาตการโทรไปยัง DCOM ยิ่งไปกว่านั้น จะต้องดำเนินการไม่เพียงแต่ในคอมพิวเตอร์ที่ได้รับการจัดการเท่านั้น แต่ยังต้องทำในคอมพิวเตอร์ที่คุณต้องการเรียกใช้สคริปต์ด้วย บนระบบ Windows XP ที่มี Service Pack 2 และสูงกว่า คุณต้องเปลี่ยนการตั้งค่าความปลอดภัยของ DCOM ซึ่งสามารถทำได้โดยใช้นโยบายกลุ่ม ในโหนดตัวเลือก Policies\Security Configuration\Windows Settings\Security Settings\Local ของคอมพิวเตอร์ สิทธิ์ควรได้รับการตั้งค่าดังนี้: DCOM: ข้อจำกัดการเข้าถึงเครื่องในไวยากรณ์ภาษาคำจำกัดความของตัวอธิบายความปลอดภัย (SDDL)
ให้สิทธิ์การเข้าสู่ระบบแบบไม่ระบุชื่อและทุกคน อนุญาต DCOM ในพื้นที่และอนุญาตการเข้าถึงระยะไกล: ข้อจำกัดในการเปิดใช้เครื่องในไวยากรณ์ภาษาคำจำกัดความของตัวอธิบายความปลอดภัย (SDDL)
ให้สิทธิ์กลุ่มผู้ดูแลระบบ อนุญาตการเปิดใช้งานภายในเครื่อง อนุญาตการเปิดใช้งานระยะไกล อนุญาตการเปิดใช้งานภายในเครื่อง อนุญาตการเปิดใช้งานระยะไกล
กลุ่มทุกคน - อนุญาตการเปิดตัวในเครื่อง อนุญาตการเปิดใช้งานในเครื่อง

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

สคริปต์ตัวอย่างที่ใช้เทคโนโลยีนี้:

รายการ #2 – การเขียนสคริปต์ระยะไกล WSH (VBScript)

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

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

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

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

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

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

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

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

รายการหมายเลข 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 เป็นแพ็คเกจแยกต่างหาก (ดูลิงก์)

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

winrm กำหนดค่าด่วน

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

winrm ช่วยกำหนดค่า

หากเว็บเซิร์ฟเวอร์ทำงานบนคอมพิวเตอร์ที่ได้รับการจัดการ WinRM จะไม่รบกวนการทำงานของคอมพิวเตอร์ แต่อย่างใด แม้ว่าจะใช้พอร์ต HTTP มาตรฐานตามค่าเริ่มต้นก็ตาม มันจะสกัดกั้นการเชื่อมต่อที่มีไว้สำหรับมันโดยเฉพาะเท่านั้น

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

กำหนดค่าบริการ WinRM (การจัดการระยะไกลของ Windows) เพื่อเริ่มการทำงานโดยอัตโนมัติ กำหนดค่ารายการนโยบายกลุ่ม คอมพิวเตอร์ Configuration\Administrative Templates\Windows Components\Windows การจัดการระยะไกล (WinRM)\WinRM Service\Allow การกำหนดค่าอัตโนมัติของผู้ฟัง ที่นี่คุณจะต้องระบุช่วงของที่อยู่ IP ที่อนุญาตการเชื่อมต่อ แน่นอน คุณจะต้องอนุญาตการเชื่อมต่อกับพอร์ตที่เหมาะสม (80 โดยค่าเริ่มต้น) ในไฟร์วอลล์ Windows

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

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

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 รุ่นที่สองยังอยู่ในการทดสอบเบต้าในขณะที่เขียน แต่ความสามารถในด้านการดำเนินการคำสั่งระยะไกลก็คุ้มค่าที่จะพูดถึงในตอนนี้ คุณสามารถลองด้วยตัวเองโดยดาวน์โหลดเวอร์ชันตัวอย่าง (ดูลิงก์) หรือเป็นส่วนหนึ่งของ 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

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

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

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

เรียกใช้คำสั่ง - ชื่อคอมพิวเตอร์หลัก -ScriptBlock (ดัมพ์อินเทอร์เฟซ netsh > c:\ipconfig.txt)

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

$Command = ((รับรายการ c:\Windows\explorer.exe).VersionInfo.FileVersion)
เรียกใช้คำสั่ง - ชื่อคอมพิวเตอร์หลัก, Server7, แบบจำลอง -ScriptBlock $Command

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

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

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

การมอบฉันทะ

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

บ่อยครั้งที่ผู้คนแก้ไขปัญหาดังกล่าวโดยใช้ยูทิลิตี้เช่น cpau.exe (ดูลิงก์) ซึ่งสร้างไฟล์ด้วยรหัสผ่านที่เข้ารหัสสำหรับบัญชีผู้ดูแลระบบที่อนุญาตให้คุณเรียกใช้โปรแกรมเฉพาะ อย่างไรก็ตามปัญหาคือแม้ว่ารหัสผ่านจะถูกเข้ารหัส แต่ยูทิลิตี้นี้จะต้องถอดรหัสก่อนที่จะรันโปรแกรม ดังนั้นผู้ใช้สามารถใช้ยูทิลิตี้ที่ทำซ้ำอัลกอริธึมการถอดรหัสรหัสผ่านและค้นหาซึ่งสามารถใช้เพื่อเปิดโปรแกรมอื่นหรือรับสิทธิพิเศษเพิ่มเติม ในทางปฏิบัตินี่เป็นเรื่องยากสำหรับผู้ใช้ทั่วไปที่ไม่มีความรู้พิเศษ แต่ก็ค่อนข้างเป็นไปได้ ฉันขอชี้แจงอีกครั้งนี่ไม่ใช่ปัญหากับยูทิลิตี้เฉพาะ แต่เป็นปัญหากับแนวทางนี้โดยทั่วไป

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

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

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

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

รายการหมายเลข 4 – Server.cmd (ชุด Windows)

ตั้งค่า trigger=c:\commandShare\trigger.txt
ตั้งค่า action=c:\scripts\action.cmd
ตั้งค่า log=c:\scripts\log.txt
:เริ่ม
ถ้ามี %ทริกเกอร์% เริ่มต้น %การกระทำ% & echo %เวลา% %วันที่%>>%log% และเดล %ทริกเกอร์%
sleep.exe5
เริ่มได้เลย

รายการหมายเลข 5 – Action.cmd (ชุด Windows)

สำหรับ /f “ข้าม=4 โทเค็น=1” %%a ใน ('ไฟล์ net') ทำไฟล์ net %%a /ปิด
ออก

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

schtasks / สร้าง /ru โดเมน\ผู้ดูแลระบบ /rp /sc onstart /tn ProxyScript /tr c:\scripts\server.cmd

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

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

หลังจากนี้ ผู้ใช้จะวางไฟล์ Run.cmd บนเดสก์ท็อปก็เพียงพอแล้ว

รายการหมายเลข 6 – Run.cmd (ชุด Windows)

การทดสอบเสียงสะท้อน > \\server\commandShare\trigger.txt

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

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

จะมีประโยชน์

เราตัดสินใจที่จะเรียนรู้ ภาษาต่างประเทศ- ครูสอนพิเศษที่บ้าน ภาษาอังกฤษจะช่วยคุณในเรื่องนี้ ที่นั่นคุณสามารถฝึกฝนกับผู้ใช้รายอื่นได้



 


อ่าน:


ใหม่

วิธีฟื้นฟูรอบประจำเดือนหลังคลอดบุตร:

การใช้สไตล์ใน Excel วิธีสร้างสไตล์ใหม่ของคุณเอง

การใช้สไตล์ใน Excel วิธีสร้างสไตล์ใหม่ของคุณเอง

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

เกิดข้อผิดพลาดอะไรระหว่างการติดตั้ง?

เกิดข้อผิดพลาดอะไรระหว่างการติดตั้ง?

หมายเหตุ: โปรแกรม AutoLISP สามารถทำงานได้บน AutoCAD เวอร์ชันเต็มเท่านั้น โดยจะไม่ทำงานภายใต้ AutoCAD LT (ไม่รวมกรณีโหลด...

สถานภาพทางสังคมของบุคคลในสังคม

สถานภาพทางสังคมของบุคคลในสังคม

เสนอแนะสิ่งที่กำหนดการเลือกสถานะหลักของบุคคล การใช้ข้อความและข้อเท็จจริงของชีวิตทางสังคม ตั้งสมมติฐานสองข้อ และ...

การตีความข้อผิดพลาดแบบเต็ม

การตีความข้อผิดพลาดแบบเต็ม

มีผู้ใช้จำนวนไม่น้อยที่ต้องเผชิญกับปรากฏการณ์หน้าจอสีน้ำเงินแห่งความตาย จะทำอย่างไร (Windows 7 มักเกิดปัญหานี้บ่อยที่สุด)...

ฟีดรูปภาพ อาร์เอสเอส