检查2-4个可能的服务器中哪一个有文件;然后使用powershell复制它

时间:2016-10-20 15:39:32

标签: powershell

Powershell新秀需要复制文件;它可能在服务器A或B上(从不两者) 无论哪个服务器驻留在;我需要将其复制到serverX

到目前为止,这是我所拥有的,但无法弄清楚,有人能指出我正确的方向吗?

$source =  "\\serverA\path\file.txt"
$source2 =  "\\serverB\path\file.txt"
$destination = "\\serverX\path\file.txt"

IF (!(Test-Path $source)
{Copy-Item -Path $source -Destination $destination 
}
ELSE 
(!(Test-Path $source2)
{Copy-Item -Path $source2 -Destination $destination 
}

提前致谢!

2 个答案:

答案 0 :(得分:1)

通过对测试路径语句使用“not”运算符,如果文件 NOT 存在,则条件的评估为真。因此,copy-item命令失败,因为没有要复制的文件。

从if和else评估中删除“not”运算符,以便在文件存在时运行以下代码块:

IF (Test-Path $source){}
ELSE (Test-Path $source2){}

答案 1 :(得分:1)

#Don't use the Not operator
IF (Test-Path $source) instead of
IF (!(Test-Path $source)
#otherwise it returns false and you don't come to the part where the file
#would get copied

我会这样做:

$paths = @("\\serverA\path\file.txt","\\serverB\path\file.txt")
$destination = "\\serverX\path\file.txt"

foreach ($path in $paths){
    if (Test-Path $path){
        Copy-Item -Path $path -Destination $destination
        break
    }
}

将所有路径扔到数组中,然后使用foreach迭代路径。如果您的文件已被找到并复制,则break应该从此循环中转义。