سؤال

أنا أبحث عن وسيلة لمعرفة ما الطابعات مستخدم معين وقد تم تعيينها في له أو لها TS الدورة.

كيف يمكن تحقيق ذلك مع WMI (عبر PowerShell) أو VB-السيناريو ؟ هناك المدمج في طريقة أنا لست على علم ؟

تحرير:في بناء الخرائط من الطابعات المحلية من خلال RDP-العميل هو تعطيل.للمستخدمين الحصول على الطابعات التي تم إنشاؤها خلال تسجيل الدخول عبر VBS-النصي حذفها أثناء تسجيل الخروج.

لذلك ليس هناك طابعات مثبتة مباشرة على موقعنا TS server الاستعلام عن Win32_Printers فئة WMI عوائد شيء.الطابعات المثبتة على مخصص ملقم الطباعة.الاستعلام عن الطابعات على ذلك الملقم بإرجاع كافة الطابعات و لا معين لمستخدم واحد.

هل كانت مفيدة؟

المحلول

بفضل Remko تعليق كنت وضعت في الاتجاه الصحيح و أخيرا السيناريو الذي فعلت ما كنت بحاجة.

في الأساس يحدد البرنامج النصي SID المستخدم و يبدو في التسجيل المستخدم الخلية (HKEY_USERS\$سيد\طابعات\اتصالات) من أجل إنشاء الطابعات.

وهنا سريعة وقذرة النصي powershell:

$server = 'servername'
$userName = 'username'

$regHKLM = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine", $server)
$regProfileList = $regHKLM.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList")

foreach ($sid in $regProfileList.GetSubKeyNames())
{
    $profileImagePath = $regProfileList.OpenSubKey($sid).GetValue("ProfileImagePath")
    if ($profileImagePath.EndsWith("\$userName"))
    {
        $regHKU = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("Users", $server)
        $regUser = $regHKU.OpenSubKey("$sid\Printers\Connections")
        foreach ($printer in $regUser.GetSubKeyNames())
        {
            $printer.Replace(",", "\")  # backslashes are replaced with commas, revert that
        }
    }
}

نصائح أخرى

وأنا لا يمكن أن تحقق في جلسة TS الآن، ولكن هذا يفعل عادة في بوويرشيل:

وGET-WMIObject Win32_Printer

من هنا: http://www.microsoft. كوم / شبكة التكنولوجيا / scriptcenter / دليل / sas_prn_tart.mspx؟ الفنزويلى = صحيح

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_Printer")
For Each objPrinter in colInstalledPrinters
 Wscript.Echo "Name: " & objPrinter.Name
 Wscript.Echo "Location: " & objPrinter.Location
Next

قد تكون تحتاج الكؤوس القائمة على التكنولوجيا؟ انها مهمة بسيطة للأكواب على أي يونيكس ولكني لست متأكدا من ويندوز.

وهذا لا حيلة لي unlick الجواب seanyboy التي ترجع الطابعات المحلية هذا السيناريو عودة شبكة الطابعات متصل إلى المستخدمين، يعمل بشكل جيد على جلسة عمل الملقم الطرفي \ سيتريكس

http://www.geekshangout.com/vbs-script-to-list-the-network-printers-a-user-is-connected-to/

وكما بقدر أفهم يمكنك قراءة بعض الحقول في السجل.

وPS: أنا أفضل استخدام لينكس لخدمة النهائية؛)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top