2

学习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 文档编写器

传真

可爱的PDF Writer

\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 文档编写器

传真

可爱的PDF Writer

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

PDF-XChange 4.0

Microsoft XPS 文档编写器

传真

从新计算机获取旧列表时CutePDF writer的存在以及新计算机获取自己的列表时不存在来看,我会说新计算机成功地从旧计算机接收打印机列表。现在,为什么网络打印机不包含在该列表中?

4

1 回答 1

2

网络打印机(与另一台服务器共享的打印机,即 PPAS0969I)是每个用户的,因此当您查询时Win32_Printer,您只能看到本地打印机以及加载在当前配置文件中的打印机。

为了帮助说明,请尝试运行以下命令:

gwmi win32_printer | select name,local | ft -a
于 2013-01-13T06:04:29.180 回答