将多个文件复制到远程位置,并在powershell中显示进度详细信息
我正在尝试将文件从本地计算机复制到远程位置。 当我运行脚本时,它将检查远程位置上是否存在文件夹。如果未创建,则将创建一个目录。创建目录后,它将从源位置复制所有文件 我的脚本可以正常工作,但我希望在屏幕上输出要复制的文件 下面的代码可以很好地复制文件,但没有显示正在复制的文件名将多个文件复制到远程位置,并在powershell中显示进度详细信息,powershell,Powershell,我正在尝试将文件从本地计算机复制到远程位置。 当我运行脚本时,它将检查远程位置上是否存在文件夹。如果未创建,则将创建一个目录。创建目录后,它将从源位置复制所有文件 我的脚本可以正常工作,但我希望在屏幕上输出要复制的文件 下面的代码可以很好地复制文件,但没有显示正在复制的文件名 $machine = $env:COMPUTERNAME $dest= "\\192.168.1.5\d$\test\" $source = "C:\windows\logs\" $newPath = Join-Pa
$machine = $env:COMPUTERNAME
$dest= "\\192.168.1.5\d$\test\"
$source = "C:\windows\logs\"
$newPath = Join-Path $dest -childpath $machine
if(!(Test-Path -Path $newPath )){
New-Item $newPath -type directory
foreach ($file in $source)
{
write-host "Copying Files: " $file -foregroundcolor DarkGreen -backgroundcolor white
Copy-Item $file -Destination $newPath -force
}
}else{
foreach ($file in $source)
{
write-host "Copying Files: " $file -foregroundcolor DarkGreen -backgroundcolor white
Copy-Item -Path $file -Destination $newPath -recurse -Force
}
}
这个代码应该可以工作。我修改了if语句,这样您就不会有多余的代码和修改的$source,这样foreach将与您的编写进度一起工作
$machine = $env:COMPUTERNAME
$dest= "\\192.168.1.5\d$\test\"
$sourcePath = 'C:\windows\logs\'
$source = Get-ChildItem $sourcePath
$newPath = Join-Path $dest -childpath $machine
if(!(Test-Path -Path $newPath )){
New-Item $newPath -type directory
}
$count = $source.count
$operation = 0
foreach ($file in $source)
{
$operation++
write-host 'Copying File: ' $file -foregroundcolor DarkGreen -backgroundcolor white
Write-Progress -Activity 'Copying data' -Status 'Progress' -PercentComplete ($operation/$count*100)
Copy-Item $file -Destination $newPath -force
}
有一个commandlet
Write Progress
,应该很方便。下面是:为什么在if块和else块中有相同的复制代码?为什么不直接使用if来确保文件夹存在,并在一次操作中复制所有文件夹下的内容呢?此脚本仍处于开发阶段。如果文件夹不存在,它将创建文件夹并复制文件。所以,我把一个复制文件命令放在测试路径下,另一个没有测试路径。谢谢你的回答。投票通过。