通过Get-WmiObject设置默认打印机时出错:调用SetDefaultPrinter的异常:不支持

时间:2017-02-27 14:04:08

标签: windows powershell printing

概述

我正在尝试使用PowerShell在Windows 2012 R2中设置默认打印机。每当我在本地执行此操作时,这都可以正常工作,但无论我如何尝试远程运行它,我需要这样做,它始终会因以下错误而失败。我已尝试使用域管理员帐户以及我需要更改默认打印机的用户凭据,但它仍然失败。

错误

  

异常调用“SetDefaultPrinter”:“不支持”   在行:1个字符:1   +(Get-WmiObject -Class Win32_Printer -Filter“(Name ='Microsoft XPS Document Write ...   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       + CategoryInfo:NotSpecified:(:) [],MethodInvocationException       + FullyQualifiedErrorId:WMIMethodException

代码示例

在本地运行时工作

$Printer = Get-WmiObject -Class Win32_Printer -Filter "(Name='Microsoft XPS Document Writer')"
$Printer.SetDefaultPrinter()

远程运行时失败

$Printer = Get-WmiObject -ComputerName "MyRemoteComputer" -Class Win32_Printer -Filter "(Name='Microsoft XPS Document Writer')"
$Printer.SetDefaultPrinter()

远程运行时也会失败

Invoke-Command -ComputerName "MyRemoteComputer" -ScriptBlock {(Get-WmiObject -Class Win32_Printer -Filter "(Name='Microsoft XPS Document Writer')").SetDefaultPrinter()}

第三次失败尝试

Get-WmiObject -ComputerName "MyRemoteComputer" -Class Win32_Printer -Filter "(Name='Microsoft XPS Document Writer')" | Invoke-WmiMethod -Name 'SetDefaultPrinter'

非常感谢任何帮助和指导。

1 个答案:

答案 0 :(得分:1)

继续搜索之后,我终于找到了一个有效的版本。我不完全理解为什么,但它有效,这对我来说已经足够了。幸运的是,我之前已经可以访问代码中的用户名和密码,否则它仍可以使用Get-Credential

$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "DOMAIN\Username", (ConvertTo-SecureString -String "ClearTextPassword" -AsPlainText -Force)
Invoke-Command -ComputerName "MyRemoteComputer" -Credential $Credential -ScriptBlock {
$net = new-Object -com WScript.Network
$net.SetDefaultPrinter("Microsoft XPS Document Writer")
}