Author Posts

August 24, 2016 at 10:25 am

I have gone through many blogs for finding solution for this issue, but never find a solution.

$CompName = "test.domain.com"
$Printer = "\\122.21.10.11\PRINTER-NAME-1"
Invoke-Command -ComputerName $CompName -Scriptblock {
Param($p)
(New-Object -Com Wscript.Network).AddWindowsPrinterConnection($p)
} -ArgumentList $Printer
I have even tried PSRemoting and tried to execute the ps1 file from remote machine. the same script is working in local and not working remote.

Enter-PSSession -ComputerName "testserver.testdomain.com" -Authentication Credssp -Credential Get-Credential
Error:

Exception calling "AddWindowsPrinterConnection" with "1" argument(s): "The printer name is invalid. (Exception from HRESULT: 0x80070709)"

August 24, 2016 at 10:51 am

It sounds as though you are having a issue with the second hop to the printer. Even though your pssession example is using Credssp there are several steps to ensure it is working. I would recommend reviewing the Second Hop section of "Secrets of PowerShell Remoting" (available for free from the eBooks section of this site)

A quick test to verify the second hop is working is to connect to the remote system and do a dir against another system.

Get-ChildItem \\SomeSystem\SomeShare

August 24, 2016 at 11:18 am

Hi, I have already tested WinRM connectivity and access to remote server etc.
I can even run other powershell or batch file in remote machine. Issue is only with adding printer.

August 25, 2016 at 2:35 am

The issue is not connectivity to the remote server it is passing authenticating on the next hop. In this case the print server.

For example this should work for you

Invoke-Command -ComputerName Server1 -ScriptBlock {Get-ChildItem c:\}

But this will fail

Invoke-Command -ComputerName Server1 -ScriptBlock {Get-ChildItem \\Server2\admin`$}

If credssp is configured on all systems correctly then this would work

Invoke-Command -ComputerName Server1 -ScriptBlock {Get-ChildItem \\Server2\admin`$} -Authentication Credssp

If it fails then at least one system is not setup for Credssp delegation. Both the system initiating the connection and the intermediary server must be configured.

August 25, 2016 at 7:20 am

#Working without Credssp
Invoke-Command -ComputerName remotemac.mydomain.com -ScriptBlock {Get-ChildItem C:\Users\myusername\Desktop}
#Working with CredSSP
Invoke-Command -ComputerName remotemac.mydomain.com -ScriptBlock {Get-ChildItem \\sharedmac\sharef} -Authentication Credssp -Credential mydomain\myusername
#script is working, but not showing network printers
Invoke-Command -ComputerName remotemac.mydomain.com -ScriptBlock {(New-Object -ComObject WScript.Network).EnumPrinterConnections()} -Authentication Credssp -Credential mydomain\myusername
#Script gives error: Invalid Printer name
$Printer = "\\172.26.30.13\SDB1-FLOOR1-B2" # i have tried this input in single, double, with and without escape character
Invoke-Command -ComputerName remotemac.mydomain.com -ScriptBlock {Param($p)(New-Object -Com Wscript.Network).AddWindowsPrinterConnection("$p")} -ArgumentList $Printer -Authentication Credssp -Credential mydomain\myusername

I'm totally stuck.
I heard we can use Group Policy, is there anyway we can automate this using group policy?
please suggest.

August 25, 2016 at 5:11 pm

you can deploy the script via Group Policy as a logon script

August 26, 2016 at 5:20 am

Can you give any samples or url having samples