我写了一个脚本,当我尝试将文件从一个位置复制到多个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}
答案 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)}