学习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的存在以及新计算机获取自己的列表时不存在来看,我会说新计算机成功地从旧计算机接收打印机列表。现在,为什么网络打印机不包含在该列表中?