概述
我正在尝试使用PowerShell在Windows 2012 R2中设置默认打印机。每当我在本地进行此操作时,此方法都可以很好地工作,但是无论我尝试如何远程运行(我需要这样做),它始终会因以下错误而失败。我已经尝试使用Domain Administrator帐户以及需要为其更改默认打印机的用户凭据进行尝试,但是仍然失败。
错误
代码示例
在本地运行时有效
$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 "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")
}
关于windows - 通过Get-WmiObject : Exception calling SetDefaultPrinter : Not Supported设置默认打印机时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42487713/