Powershell:无法从远程计算机获取网络打印机列表并在新计算机上安装这些打印机

时间:2012-11-15 16:17:44

标签: powershell wmi

学习powershell 2周,所以慢慢解释一下。 $ oldMachineName通常由用户使用Read-host设置。在下面的脚本中,我用各种名称替换它来测试不同的场景。

我的剧本:

$oldPcName = Read-Host "Please enter the name or IP address of the old pc."

$oldNetworkPrinters = Get-WmiObject win32_printer -ComputerName "$oldPcName" 

foreach ($printer in $oldNetworkPrinters)
    {
    $fullPath =$printer.name
    write-host $fullPath
     (New-Object -ComObject WScript.Network).AddWindowsPrinterConnection($fullPath)           
    } 

在旧计算机上运行脚本时获得$ fullPath的结果值,获取自己的打印机列表:

  

PDF-XChange 4.0

     

Microsoft XPS Document Writer

     

传真

     

CutePDF作家

     

\ PPAS0969I \ PPAP_RIVERHOUNDS_PCL

     

\ PPAS0969I \ PPAP_HP5KIT_PCL

     

\ PPAS0969I \ PPAP_HP5KIT_PS

     

\ PPAS0969I \ PPAP_RIVERHOUNDS_PS

     

\ PPAS0969I \ ppap_panthers_pcl

在新计算机上运行脚本时获取$ fullPath的结果值,获取旧计算机的打印机列表:

  

PDF-XChange 4.0

     

Microsoft XPS Document Writer

     

传真

     

CutePDF作家

在新计算机上运行脚本时获得$ fullPath的结果值,获取自己的打印机列表:

  

PDF-XChange 4.0

     

Microsoft XPS Document Writer

     

传真

当新计算机获得旧列表时,CutePDF编写器的存在判断,并且当新计算机获得自己的列表时缺少它,我会说新计算机成功从旧计算机接收打印机列表。现在,为什么网络打印机不包含在该列表中?

1 个答案:

答案 0 :(得分:1)

网络打印机(那些与其他服务器共享的打印机,即PPAS0969I)是按用户使用的,因此当您查询Win32_Printer时,您只能看到本地打印机以及当前配置文件中加载的打印机。

为了帮助说明,请尝试运行以下内容:

gwmi win32_printer | select name,local | ft -a