Powershell – How to get the printer shares on a print server using Powershell

network-printernetwork-sharepowershell

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

Best Answer

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)
Related Topic