Copy 1 File to Multiple Computers

Tagged: ,

This topic contains 8 replies, has 4 voices, and was last updated by Profile photo of Ken Berns Ken Berns 1 year, 11 months ago.

  • Author
    Posts
  • #26787
    Profile photo of Ken Berns
    Ken Berns
    Participant

    I'm having a devil of a time getting this script to work. I want to copy a local file (Public.lnk) to several other PC Desktops. I cannot get it to work and have tried several other variations. I'm a total newbe at PowerShell so any help would be appreciated .

    # PCList.txt is a list of IP addresses.
    $PCList = Get-Content -Path C:\Scripts\PCList.txt

    foreach ($PC in $PCList){
    Copy-Item -Path C:\scripts\files\Public.lnk -Destination \\$PC\C$\Users\Public\Desktop
    }

    This is the error I'm getting-
    Copy-Item : The filename, directory name, or volume label syntax is incorrect.
    At C:\Scripts\CopyFile06.ps1:4 char:1
    + Copy-Item -Path C:\scripts\files\Public.lnk -Destination \\$PC\C$\Users\Public\D ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • #26788
    Profile photo of Windows LiveUser26
    Windows LiveUser26
    Participant

    I believe you may have to change your parameter. Try this:

    $PCList = (Get-content -Path C:\Scripts\PCList.txt)

    I'm fairly new at this so anybody else, feel free to correct me.

  • #26789
    Profile photo of Ken Berns
    Ken Berns
    Participant

    Thanks for the quick response – but that didn't do it. I get the same error.
    On all the examples I've studied (dozens), none put parenthesis around that parameter. It seems the issues is with the execution syntax ??

  • #26790
    Profile photo of Windows LiveUser26
    Windows LiveUser26
    Participant

    Have you tried to remove the Admin share ($) from your path?

    -Destination \\$PS\C:\Users\Public\Desktop

  • #26791
    Profile photo of Greg Altman
    Greg Altman
    Participant

    Hi Ken,
    I believe the problem is in the Destination part.
    Try escaping the $ in the destination path

    # PCList.txt is a list of IP addresses.
     $PCList = Get-Content -Path C:\Scripts\PCList.txt
    
    foreach ($PC in $PCList){
     Copy-Item -Path C:\scripts\files\Public.lnk -Destination \\$PC\C`$\Users\Public\Desktop
     }
    
  • #26793
    Profile photo of Ken Berns
    Ken Berns
    Participant

    When I Use this variation (below), It worked 1 time then after that, no errors show , and no file is copied either.

    $PCList = Get-Content -Path C:\Scripts\PClist.txt
    foreach ($PC in $PCList){
    Copy-Item -Path C:\scripts\files\Public.lnk -Destination \Users\Public\Desktop\Public.lnk

    }

  • #26794
    Profile photo of Greg Altman
    Greg Altman
    Participant

    That variation of the destination parameter doesn't really go anywhere except perhaps your PC that you are executing the script from.

    When I used the example I posted above in my test lab, it copied the file to 3 different pc's.

    The key element is the backtick between the C and the $. That escapes the $ so Powershell doesn't think that's the beginning of a variable name.

  • #26795
    Profile photo of Wilfredo Perez
    Wilfredo Perez
    Participant

    Ken,

    Try something like this:

    $pcnames = Get-Content -Path C:\Scripts\PClist.txt
    
    foreach ($cn in $pcnames){
    
    Copy-Item -Path 'C:\scripts\files\Public.lnk' -Destination "\\$CN\c`$\Users\Public\Desktop\" 
    }
    

    It worked for me. Do not add the Public.lnk in the -Destination part

  • #26814
    Profile photo of Ken Berns
    Ken Berns
    Participant

    Oh you won't believe it – After running the script with the "Write-Output" cmdlet, I noticed 5 output lines when there should have been only 2 (2 PCs in my PCList.txt) along with a bunch of errors – As you can see below "\\\c$\Users\Public\Desktop" shows 3 times. Where is this coming from ?? – I deleted the PCList.txt file and created a new one and the problem went away. Apparently there was something wrong with that .txt file that was not visible OR it was RTFM.

    PS C:\> C:\Scripts\CopyFile09.ps1
    \\PC-Annex\C$\Users\Public\Desktop
    \\it-office-02\C$\Users\Public\Desktop
    \\\c$\Users\Public\Desktop
    \\\c$\Users\Public\Desktop
    \\\c$\Users\Public\Desktop

    The Script is working correctly now; Thanks to everyone who contributed and got me going in the right direction.

You must be logged in to reply to this topic.