แบบสอบถาม Win32_TCPIPPrinterPort WMI ว่างเปล่า

เมื่อฉันค้นหา WMI (ด้วยวิธีใดก็ตาม) สำหรับเครื่องพิมพ์:

select * from Win32_Printer

ฉันได้รับผลลัพธ์ตามปกติ เมื่อฉันพยายามค้นหาพอร์ต:

select * from Win32_TCPIPPrinterPort

ข้อความค้นหา "สำเร็จ" แต่ฉันไม่ได้รับผลลัพธ์ มีพอร์ตมากกว่า 100 พอร์ตบนเซิร์ฟเวอร์นี้ แต่ไม่มี prnport.vbs, wbemtest, powershell หรือโค้ดของฉันเองไม่ได้รับผลลัพธ์ใดๆ

ระบบปฏิบัติการใน 2003R2 และผู้ใช้มีความเป็นส่วนตัวของผู้ดูแลระบบ


person user2483403    schedule 21.01.2015    source แหล่งที่มา
comment
คำถามไหน: มีบริการที่ต้องอาศัยสิ่งนี้หรือไม่? อะไรให้ข้อมูลพอร์ตท้องถิ่น? อะไรตอบคำถาม WMI สิ่งเหล่านี้อาจนำไปสู่ต้นตอของปัญหาได้! ไอเดีย?   -  person user2483403    schedule 25.01.2015


คำตอบ (2)


ปรากฎว่าพอร์ตในเครื่อง (และเปลี่ยนเส้นทางในเครื่องเช่น ghostscript ฯลฯ ) จะไม่แสดงรายการอยู่ในแบบสอบถาม WMI นี้ พวกเขาจะถูกจัดเก็บไว้ในรีจิสทรีโดยตรง ซึ่งหมายความว่าสคริปต์ปกติในการย้ายพารามิเตอร์เครื่องพิมพ์เหล่านี้จะได้รับเครื่องพิมพ์ แต่ไม่ใช่ข้อมูลพอร์ต

ถูกเก็บไว้ใน: HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors\Redirected Port\Ports

ใช้ชีวิตและเรียนรู้

person user2483403    schedule 28.01.2015

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

$PrintQueue = (Get-ItemProperty -Path Registry::"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\$Queue" -Name Queue).Queue

$Protocol = (Get-ItemProperty -Path Registry::"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\$Queue" -Name Protocol).Protocol

ตัวแปร $Queue ในสตริงพาธด้านบนคือตัวแปรคิวการพิมพ์ใน foreach loop ของฉัน เปลี่ยนเป็นชื่อคิวการพิมพ์ตามต้องการหรือตั้งค่าตัวแปรก่อนหน้าในโค้ด

นอกจากนี้ ฉันยังพบคิวการพิมพ์ที่ไม่ได้ตั้งค่า Queue ไว้ ดังนั้นฉันจึงเพิ่มคำสั่ง if เพื่อตั้งค่า ซึ่งฉันต้องการเพื่อป้อนข้อมูลนี้ไปยังสคริปต์อื่นที่ติดตั้งคิวการพิมพ์บนเซิร์ฟเวอร์ 2012R2

if($PrintQueue = $null){
    $PrintQueue = 'Print'
    }#if

หวังว่านี่จะช่วยได้

person Ryan Lopez    schedule 02.02.2015