错误设置默认打印机通过get-wmiObject:异常调用setDefaultPrinter:不支持



概述

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

错误

异常调用" setDefaultPrinter":"不支持" 在线:1 char:1 (get -wmiObject -class win32_printer -filter"(name ='Microsoft XPS文档写... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ categoryInfo:未指定:(:) [],methodInvocation exception 完全QualifiedErrid: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'

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

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

$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "DOMAINUsername", (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")
}

相关内容

最新更新