首页 > 解决方案 > 检查网络慢的打印机权限

问题描述

改天,我猜另一个脚本。我已经编写了一个脚本,用于在相当大的环境中检查共享打印机的权限。我已经使用 SMB Shares 完成了这项工作,效果很好。但是检查共享打印机权限可以工作,但速度慢得令人难以忍受。

要获得一些排除问题的计算机:

$ADComputer = Get-ADComputer -Filter 'Name -like "DC-*"' | Where-Object { $excludeList -notcontains $_.name }

在那之后,我得到了每个系统的打印机列表:

$Printer = @()
foreach ($compname in $ADComputer.Name){
    try {
        #Write-Host "Read Data of $($compname)"
        $Printerrow = Get-Printer -ComputerName $compname -Full -ErrorAction STOP # Silent Errors
        $Printer += $Printerrow
    } 
    catch {
        Write-Warning "Spoolerservice on host $($compname) not available."
    }
}

在这一步之后,我过滤掉了一些我不想要的打印机,比如 PDF 打印机的东西。最后一段代码检查权限:

ForEach ($objekt in $PrintersFiltered) {
    Try { 
        if($object.Shared -eq $true) {
            $Permissions = Convert-SDDLToACL $object.PermissionSDDL | Select-Object Name -Expand IdentityReference | Select-Object -Expand Value
            if ($Permissions-eq "Everyone") {
                Write-Warning "$($objekt.ComputerName) - $($objekt.name) - Error!"
                $ErrorCount++
            }
        }
    } 
    catch {
        break
    }
}

我的猜测是,正是这一 $Printerrow= Get-Printer -ComputerName $compname -Full -ErrorAction STOP # Silent Errors行使脚本如此缓慢。因为如果服务器上的某个假脱机设备没有响应,则需要很长时间。

有没有人有关于如何加快速度的想法/提示?有没有办法通过“调用命令”功能获取打印机列表?

先感谢您!

标签: windowspowershellprintingpermissionsremote-access

解决方案


推荐阅读