Author Posts

August 3, 2016 at 11:15 pm

I was runningt hrough examples from Jason's course on PS 5 and get an error trying to use Copy-Item in a ForEach-Object loop

PS C:\> $servers | foreach-object  {Copy-Item -Credential $creds .\cl21163_Groups.txt -Destination \\$_\C$\ }
The FileSystem provider supports credentials only on the New-PSDrive cmdlet. Perform the operation again without specifying
At line:1 char:29
+ ... ch-object  {Copy-Item -Credential $creds .\cl21163_Groups.txt -Destin ...

What am I doing wrong here? His example doesn't require creds but my servers do. I have my creds stored in a variable.


August 3, 2016 at 11:57 pm

To use credentials you will need to authenticate and create a temporary mapped drive to the remote system.
Something like this should work for you

$servers | foreach-object  {
    New-PSDrive -Name Copyto -PSProvider FileSystem -Credential $creds -Root "\\$_\C`$\" 
    Copy-Item -Path .\cl21163_Groups.txt -Destination Copyto:\
    Remove-PSDrive -Name Copyto

August 4, 2016 at 12:06 am

Hi Jeff,

A possible solution would be to use the New-PSDrive cmdlet with credentials before the Copy-Item cmdlet.