将不同的文件复制到不同的机器

时间:2014-02-13 19:32:07

标签: windows powershell vbscript admin

我正在尝试使用一个脚本来将文件列表中的文件复制到网络中的许多不同计算机上。我发现一些脚本可以完成部分工作,但不是我想要的一切。

#Point the script to the text file'
$Computers = Read-Host "Enter Location Of TXT File"
# sets the varible for the file location ei c:\temp\ThisFile.exe
$Source = Read-Host "Enter File Source"
# sets the varible for the file destination
$Destination = Read-Host "Enter File destination (windows\temp)"
# displays the computer names on screen
Get-Content $Computers | foreach {Copy-Item $Source -Destination \\$_\c$\$Destination

此脚本将提取计算机列表,但我还希望它能够提取需要复制的文件列表。

示例:

计算机文本文件

第1行Workstation1

第2行Workstation2

文件文件

第1行config1.cfg

第2行config2.cfg

谢谢!

1 个答案:

答案 0 :(得分:0)

就个人而言,我宁愿使用“打开文件对话框”窗口来选择文件。因此,我正在抛弃一个允许它的功能。如果需要,允许使用一些基本的过滤器(用法是以-Filter“csv”,“txt”为例)。

Function Select-File {
Param([switch]$Multi = $False,
[ValidateSet("csv","txt","doc","docx","xls","xlsx")][Array]$Filter)
Add-Type -AssemblyName System.Windows.Forms
$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog -Property @{InitialDirectory = [Environment]::GetFolderPath('Desktop')}
If($Multi){$FileBrowser.Multiselect = $true}
If($Filter){$FileFilter=@()
Switch($Filter){
"csv"{$FileFilter+="Comma Seperated Value (*.csv)|*.csv"}
"doc"{$FileFilter+="Older Word Document (*.doc)|*.doc"}
"docx"{$FileFilter+="Word Document (*.docx)|*.docx"}
"xls"{$FileFilter+="Older Excel Document (*.xls)|*.xls"}
"xlsx"{$FileFilter+="Excel Document (*.xlsx)|*.xlsx"}
"txt"{$FileFilter+="Text File (*.txt)|*.txt"}
}$FileFilter = $FileFilter -join "|"
$FileBrowser.Filter = $FileFilter}
[void]$FileBrowser.ShowDialog()
$FileBrowser.FileNames
}

#Load Computer List From File
$Computers = Get-Content (Select-File -Filter "txt")
#Load File Config From File
$Files = Import-CSV (Select-File -Filter "csv")
#Loop through all computers
ForEach($Computer in $Computers){
    #Loop through each file on a per-computer basis
    ForEach($File in $Files){Copy-Item $File.From "\\$computer\c$\$($File.To.TrimStart('C:\'))"}
}

好的,假设你有一个csv用于包含2列的文件,From和To是你要复制的文件的完整路径,以及你要复制到的完整路径。如果它包含在文件中,它将删除目标路径开头的C:\。

相关问题