将文件复制到多个服务器的脚本

时间:2017-07-26 13:50:56

标签: powershell

我写了一个脚本,当我尝试将文件从一个位置复制到多个Windows服务器时,它看起来像是要求输入。

我在这里做错了什么?我只想在没有任何交互的情况下执行脚本,它应该将文件从源文件复制到多个服务器上的目标。

将脚本指向文本文件

$Computers = Read-Host "C:\File Copy\Source Server"

设置文件位置的变量ei c:\ temp \ File.xxx

$Source = Read-Host "C:\File Copy\prod.csv"

设置文件目标的变量

$Destination = Read-Host "C:\File copy\Servers"

在屏幕上显示计算机名称

Get-Content $Computers | foreach {Copy-Item $Source -Destination \\$_\c$\$Destination}

1 个答案:

答案 0 :(得分:2)

Read-Host从控制台主机获取输入。如果您不想被提示,只需删除它们并将变量设置为等于您的路径字符串。

此外,您的$Computers变量看起来不像是指向计算机名称为Get-Content的文件。其次,你的目标变量看起来不像是与UNC路径正确连接的东西\\$_\C$我已经更新了脚本来解决这两个问题。

# Point the script to a text file with a list of computers
$Computers = "C:\File Copy\Source Server\ComputerList.txt"

# Sets the variable for the source file location
$Source = "C:\File Copy\prod.csv"

# Sets the variable for the file destination
$Destination = "File copy\Servers"  

# Get the content of $computers and copy Source to Destination
Get-Content $Computers | ForEach-Object {Copy-Item $Source -Destination (Join-Path "\\$_\c`$\" $Destination)}