检查远程计算机上是否存在文件。如果没有,则复制它

时间:2013-10-02 15:34:35

标签: powershell powershell-v2.0

我对powershell很新,并且想知道是否有人能指出我正确的方向。

我正在寻找一个可以帮助我完成以下操作的脚本:

  1. 我有一个文件需要推送到远程机器。
  2. 我有一个远程计算机名称列表,我希望检查该文件是否存在。
  3. 如果文件存在且大小和日期相同,则不执行任何操作。
  4. 如果文件不存在,或者日期/大小不同,则复制文件。
  5. 我也想写一些日志/文本文件来指示状态,例如“PC1 - 找不到文件。复制”或“PC2 - 找到确切文件,没有复制”

2 个答案:

答案 0 :(得分:1)

有一个遵循你的逻辑的powershell脚本。目的地可以是UNC路径。

$source =  "C:\Tmp\Test.txt"
$destination = "C:\Tmp\Destination\Test.txt"

$TestPath = Test-Path $destination
IF (!$TestPath)
{Copy-Item $source $destination -Verbose
PC1 - no file found. Copying}
ELSE
{
IF (((Get-ChildItem $source).Length -ne (Get-ChildItem $destination).Length) -or ((Get-ChildItem $source).LastWriteTime -ne (Get-ChildItem $destination).LastWriteTime))
{Copy-Item $source $destination -Force -Verbose}
ELSE
{"PC2 - exact file found, nothing copied"}
}

答案 1 :(得分:0)

你考虑过使用Robocopy吗?如果您是管理员,可以复制到本地计算机。

\ pcname \ C $ \路径\

如果需要,您可以进行差异复制和镜像。