2015-02-06 103 views
0

我不明白当我尝试运行我的powershell脚本时收到的错误消息。目的是将.bat文件复制到一系列机器上的主win 7启动文件夹中。我的Powershell脚本有什么问题?

enter image description here

而且我运行该脚本。

$ServerList = Get-Content "C:\ServersList.txt" #Change this to location of servers list 
$SourceFileLocation = "C:\firefox_issue.bat" #For example: D:\FoldertoCopy\ or D:\file.txt 
$Destination = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup" #Example: C$\temp 

foreach ($_ in $ServerList) 
{Copy-Item $SourceFileLocation -Destination \\$_\$Destination -Recurse -PassThru} 


Write-Host "Press any key to continue ..." 

$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") 

Write-Host 
Write-Host "A" 
Write-Host "B" 
Write-Host "C" 

回答

1

您是否看过$Destination行后面的注释? 这是一个UNC路径。 \\server1\c:\programdata\不是有效的UNC路径。尝试:

$Destination = "C$\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup" 

此外,$_是管道输入的保留变量,所以你需要去改变它,如:

foreach ($server in $ServerList) 
{Copy-Item $SourceFileLocation -Destination \\$server\$Destination -Recurse -PassThru} 
1

因为你的位置是越来越设置为:

\\SERVERNAME\C:\ProgramData... 

它应该是:

\\SERVERNAME\C$\ProgamData... 

你的目标必须是:

$Destination = 'C$\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup' 

而且你的循环应该是:

foreach($server in $serverList) { 
    Copy-Item $SourceFileLocation -Destination "\\$server\$Destination" -Recurse 
} 

你或许应该避免明确使用$_作为一个变量名作为$_是在访问对象的特殊变量管道。