How can I get the printer shares on a print server using Powershell?

1

I'm trying to use Powershell to get the print shares from a remote print server.

I'm using:

Get-WmiObject Win32_Share -computerName "print-server"

I'm getting an "access denied" error:

Get-WmiObject : Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
At line:1 char:14
+ Get-WmiObject <<<<  Win32_Share -computerName "print-server"
    + CategoryInfo          : NotSpecified: (:) [Get-WmiObject], UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

I don't get why I can's see the shares, though, as if I connect through My Computer (e.g. \\print-server\) I can see all the print shares fine.

Any ideas?

Thanks.

Ben

network-share
network-printer
powershell
asked on Server Fault Jul 18, 2010 by Ben

2 Answers

1

Yeah you can see them in Windows Explorer but get an access denied with your Powershell command because you're trying to execute a WMI query on the remote machine, for which you need valid credentials.

If you wanted to store the credentials so that you could run that command non-interactively, you could convert the password and store it as a securestring in a file, but that's just obfuscation and any intelligent snoop would be able to decode it.

Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File secret.txt

$pass = Get-Content secret.txt | ConvertTo-Securestring
$creds = New-Object -Typename System.Management.Automation.PSCredential -Argumentlist "domain\admin",$pass

Maybe try abandoning the WMI query route altogether. Maybe try a good ole' COM object like so:

$network = New-Object -Com WScript.Network
$network.AddWindowsPrinterConnection($printerShare)
answered on Server Fault May 6, 2012 by Ryan Ries • edited May 6, 2012 by Ryan Ries
0

Try passing credentials with Get-WmiObject as follows.

$Credential = Get-Credential

(You will get a prompt for credentials)

Get-WmiObject Win32_Share -ComputerName 'PRINT-SERVER' -Credential $Credential

answered on Server Fault Jul 18, 2010 by Ben Pilbrow

User contributions licensed under CC BY-SA 3.0