2014-02-13 64 views
1

我試圖讓一個腳本工作,將一個文件從文件列表複製到網絡中的許多不同的機器。我發現一些腳本可以完成部分工作,但不是我想要的。將不同的文件複製到不同的機器

#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

line 2 config2.cfg

謝謝!

回答

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){[email protected]() 
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列,從和到是你是從複製該文件的完整路徑,您要複製到的完整路徑。如果包含在文件中,它將刪除目標路徑開始處的C:\。

相關問題