На терминальном сервере Windows 2003 администратору били видны все подключенные принтеры пользователей, но на Windows 2008 эта фича исчезла. Нажеприведенный Powershell скриптик позволяет вывести список подключенных принтеров пользователей и подсчитать их количество:

$servers = get-content c:\compnames.txt

Function CloseAllRegs {
    if($regHKU -ne $null) {
        $regHKU.Close()
    }
    
    if($regUser -ne $null) {
        $regUser.Close()
    }
    if($regHKLM -ne $null) {
        $regHKLM.Close()
    }
    if($regProfileList -ne $null) {
        $regProfileList.Close()
    }
}

foreach ($server in $servers) {
  $numprinters = 0
    # Trim white space after the computer name
    $server = $server.Trim()

    $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")
        $regHKU = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("Users", $server)
        $regUser = $regHKU.OpenSubKey("$sid\Printers\Connections")
            if ($regUser -eq $null) {
                $regHKU.Close()
                continue
            }
            
            foreach ($printer in $regUser.GetSubKeyNames()) {
                write-host -NoNewline $server','
                $printer.Replace(",", "\")  # backslashes are replaced with commas, revert that
                $numprinters = $numprinters + 1
            }
   
    }
   
    CloseAllRegs
    write-host 'Total number of printers on '$server ' - ' $numprinters

 }
 
Enter your comment. Wiki syntax is allowed:
O​ H N K H
 
  • ms_windows_ms_sql/подсчитать_количество_принтеров_на_терминальном_сервере_windows_2008.txt
  • Last modified: 2019/02/11 09:13
  • (external edit)