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
}
提前致谢!
答案 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应该从此循环中转义。