windows - Fejl ved indstilling af standardprinter via Get-WmiObject: Undtagelsesopkald SetDefaultPrinter: Ikke understøttet

Indlæg af Hanne Mølgaard Plasc

Problem



Oversigt



Jeg forsøger at bruge PowerShell til at indstille en standardprinter i Windows 2012 R2. Dette virker fint hver gang jeg gør det lokalt, uanset hvordan jeg forsøger at køre det eksternt, hvilket jeg skal gøre, svigter det altid med under fejl. Jeg har prøvet dette med Domain Administrator-kontoen samt brugerens legitimationsoplysninger, som jeg skal ændre standardprinter til, men det mislykkes stadig.


Fejl




  Undtagelsesopkald 'SetDefaultPrinter': 'Ikke understøttet'
  På linje: 1 char: 1
  + (Get-WmiObject -Class Win32\_Printer -Filter '(Navn =' Microsoft XPS Document Write ...
  + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      + CategoryInfo: NotSpecified: (:) [[]], MethodInvocationException
      + FullyQualifiedErrorId: WMIMethodException



Kodeeksempel



Fungerer, når du kører lokalt



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


Fejl ved fjernbetjening



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


Mangler også, når du kører fjernt



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


Tredje fejlforsøg



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


Enhver hjælp og vejledning værdsættes meget.

Bedste reference


Efter fortsat søgning har jeg endelig fundet en version, der fungerer. Jeg forstår ikke fuldt ud hvorfor, men det virker, og det er godt nok for mig. Heldigvis har jeg allerede fået adgang til brugernavnet og adgangskoden tidligere i kode, ellers ville det stadig arbejde med 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")
}