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

5,115

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)
Share:
5,115

Related videos on Youtube

Ben
Author by

Ben

Updated on September 17, 2022

Comments

  • Ben
    Ben almost 2 years

    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

    • Spence
      Spence almost 14 years
      What's that famous quote (originally said of XML)-- something like "When you say 'I have a problem. I think I'll solve it with PowerShell!' you end up with two problems."
    • Eric C. Singer
      Eric C. Singer over 12 years
      What are you trying to do with the script though? You mention login script, are you trying to map a printer for a user? As mentioned you won't be able to utilize wmi to get the share names of a remote print server without admin credentials.
  • Sergiy Kostenko
    Sergiy Kostenko almost 14 years
    Or Get-WmiObject Win32_Share -ComputerName 'PRINT-SERVER' -Credential (Get-Credential) for a one-liner
  • Ben
    Ben almost 14 years
    Trouble is, I want to run this in a login script, so don't want user to have to enter password. The bit I don't get is why I get access denied, even though I can see all the shares in Explorer...?
  • Jochen Bedersdorfer
    Jochen Bedersdorfer almost 14 years
    Are you a local admin on "print-server"? You don't need to be an admin to see the print shares via explorer, but you need them if you are running a WMI query.