แบบสอบถาม WMI รับข้อมูลท้องถิ่นจากเซิร์ฟเวอร์ระยะไกล (สำหรับ BgInfo)


2

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


เช่นนี้wmic.exe /node:"IP-or-HostName" ComputerSystem Get UserName?
harrymc

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

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

ถูกต้อง.
รูต

@PimpJuiceIT IP เป็นที่ยอมรับแทนชื่อโฮสต์ WMI เป็นโซลูชันที่ต้องการเนื่องจากเป็นหนึ่งในไม่กี่แหล่งที่มาสำหรับค่าที่กำหนดเองที่ BgInfo นำเสนอ BgInfo มีตัวเลือกแหล่งข้อมูลอื่น ๆ เช่น "เนื้อหาของไฟล์" แต่ฉันต้องการหลีกเลี่ยงการต้องใช้หลายขั้นตอนในการเข้าถึงโซลูชันนี้หากเป็นไปได้ (เช่น Powershell ทำงานจากภายนอกด้วยผลลัพธ์ที่บันทึกไว้ในไฟล์)
รูต

คำตอบ:


2

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

@echo off

echo %CLIENTNAME%

exit

คุณไม่จำเป็นต้องใช้สคริปต์ใด ๆ เนื่องจากbginfoอนุญาตให้ใช้ฟิลด์ที่กำหนดเอง ไปที่ฟิลด์ที่กำหนดเอง -> เพิ่มฟิลด์ใหม่และเลือกEnvironment variableและเพิ่มตัวแปร =CLIENTNAME


0

เท่าที่ฉันรู้ WMI ไม่สามารถทำได้ คุณจะต้องใช้ Win32 API ใน PowerShell เป็นต้นและเรียกใช้ฟังก์ชัน WTSQuerySessionInformationโดยตรงที่ พบภายในwtsapi32.dllโดยใช้พารามิเตอร์:

hServer = WTS_CURRENT_SERVER_HANDLE (null or 0)
SessionId = WTS_CURRENT_SESSION (-1)

คุณสามารถค้นหาตัวอย่าง PowerShell ที่ใช้งานได้สำหรับการโทร WTSQuerySessionInformation ในคำตอบข้อผิดพลาดเซิร์ฟเวอร์นี้ซึ่งคุณควรเริ่มต้น

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.