我的Powershell脚本出了什么问题?

时间:2015-02-06 17:17:22

标签: windows powershell batch-file windows-7 remote-access

我不理解我在尝试运行PowerShell脚本时收到的此错误消息。目的是将.bat文件复制到一系列计算机上的主win 7启动文件夹中。

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"

2 个答案:

答案 0 :(得分: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 :(得分: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
}

您应该避免明确使用$_作为变量名称,因为$_是用于访问管道中对象的特殊变量。