How can I get the printer shares on a print server using Powershell?
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 videos on Youtube
Ben
Updated on September 17, 2022Comments
-
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 almost 14 yearsWhat'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 over 12 yearsWhat 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 almost 14 yearsOr Get-WmiObject Win32_Share -ComputerName 'PRINT-SERVER' -Credential (Get-Credential) for a one-liner
-
Ben almost 14 yearsTrouble 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 almost 14 yearsAre 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.