学习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编写器的存在判断,并且当新计算机获得自己的列表时缺少它,我会说新计算机成功从旧计算机接收打印机列表。现在,为什么网络打印机不包含在该列表中?
答案 0 :(得分:1)
网络打印机(那些与其他服务器共享的打印机,即PPAS0969I)是按用户使用的,因此当您查询Win32_Printer
时,您只能看到本地打印机以及当前配置文件中加载的打印机。
为了帮助说明,请尝试运行以下内容:
gwmi win32_printer | select name,local | ft -a