2015-02-06 102 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 
} 

你或許應該避免明確使用$_作爲一個變量名作爲$_是在訪問對象的特殊變量管道。