2014-06-18 2 views
-2

J'essaie de prendre un fichier d'économiseur d'écran que j'ai créé et de le copier dans tous nos dossiers desktops et laptops \ system32. J'ai créé un fichier texte d'ordinateur et trouvé ce script, mais je continue d'obtenir cette erreur. Toute aide serait appréciée.Copie de fichiers de masse vers les ordinateurs du domaine

Exécution dans Powershell 3.0 sur un serveur 2012 connecté en tant qu'administrateur.

$computers = gc "\\server\share\scripts\computers.txt" 
$source = "\\share\scripts\MySlideshow.scr" 
$dest = "C:\Windows\System32" 
foreach ($computer in $computers) { 
    if (test-Connection -Cn $computer -quiet) { 
     Copy-Item $source -Destination \\$computer\$dest -Recurse 
    } else { 
     "$computer is not online" 
    } 
} 

Erreur:

Copy-Item : The given path's format is not supported. 
At C:\users\tech\desktop\scripts\screen.ps1:6 char:9 
+   Copy-Item $source -Destination \\$computer\$dest -Recurse 
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [Copy-Item], NotSupportedException 
    + FullyQualifiedErrorId : System.NotSupportedException,Microsoft.PowerShell.Commands.CopyItemCommand 
+0

ne devrait-ce pas être '$ source = '\\ server01 \ share \ scripts \ MySlideshow.scr''? – TheMadTechnician

+0

'\\ $ computer \ $ dest' ne fonctionnera pas, car il ne s'agit pas d'un chemin d'accès valide. (Si l'ordinateur est '\\ Test', il en résultera' \\ Test \ C: \ Windows \ System32', ce qui est illégal.Vous ne pouvez pas avoir un ': 'incorporé dans un chemin UNC.) –

Répondre

2

Le format UNC résultant pour vous la destination est invalide. Vous passez

"\\computer\c:\windows\system32" 

quand vous devriez passez

"\\computer\c$\windows\system32" 

Essayez de citer le paramètre -destination comme ça aussi:

Copy-Item $source -Destination "\\$computer\$dest" -Recurse 

Vous aurez également besoin d'utiliser les guillemets simples lorsque l'affectation à $dest pour empêcher PowerShell d'essayer d'étendre le signe dollar en tant que signe variable.

$dest = 'c$\windows\system32' 

Debug votre script en utilisant copy-item -whatif ... pour faire en sorte que vous passez les paramètres corrects.

Questions connexes