2012-11-15 68 views
2

在學習PowerShell 2周後,慢慢解釋事情。 $ oldMachineName通常由用戶使用Read-host設置。在下面的腳本中,我用各種名稱替換它以測試不同的場景。Powershell:無法從遠程計算機獲取網絡打印機列表並在新計算機上安裝這些打印機

我的腳本:

$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

微軟XPS文檔寫入

傳真

CutePDF Writer

當我在新計算機上運行腳本時,產生的$ fullPath值讓我TS自己的打印機列表:

PDF-Xchange的4.0

微軟XPS文檔寫入

傳真

通過CutePDF作家的存在來看,當新的計算機獲取舊列表,並當新計算機獲得自己的列表時缺少它,我會說新計算機正在成功接收來自舊計算機的打印機列表。現在,爲什麼列表中不包括網絡打印機?

回答

1

網絡打印機(在另一臺服務器上共享的打印機,即PPAS0969I)是按用戶設置的,因此當您查詢Win32_Printer時,只能看到本地打印機以及當前配置文件中加載的打印機。

爲了說明這一點,嘗試運行以下:

gwmi win32_printer | select name,local | ft -a