我正在尝试使用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'
非常感谢任何帮助和指导。
答案 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")
}