首页 文章

跨多个服务器的Powershell文件比较

提问于
浏览
2

我是powershell的新手,请原谅noob问题 . 我正在尝试比较多个服务器上的目录,以确保它们是同步的 . 我正在从servers.txt文件中读取服务器,并将列表中的第一个服务器设置为源服务器 .

# sets the source server as the FIRST server in the list
$sourceSRV = (Get-Content ./servers.txt -totalcount 1)
$servers = Get-Content ./servers.txt

#Variables for code directories
$code_src01 = Get-ChildItem -Recurse -path "E$\appdirectory"

Foreach ($server in $servers) {
    Compare-Object -ReferenceObject $sourceSRV$code_src01 - 
DifferenceObject $server$code_src01 
}

我在Compare-Object调用中遇到了这个问题,我不确定要传递什么作为-ReferenceObject和-DifferenceObject属性 . 我希望ReferenceObject成为源服务器和文件路径的路径(server1 \ e $ \ appdirectory)和-differenceobject到列表中的其他服务器(server2 \ e $ \ appdirectory,server3 \ e $ \ appdirectory )

1 回答

  • 0

    你非常接近,但你的比较是错误的:

    $ServerList = Get-Content -Path .\servers.txt
    $Reference = (Get-ChildItem -Path "\\$($ServerList[0])\E$\appdirectory" -Recurse).FullName.Replace("\\$($ServerList[0])",'')
    
    ForEach ($Server in $ServerList)
    {
        $CompareArgs = @{
            ReferenceObject = $Reference
            DifferenceObject = (Get-ChildItem -Path "\\$Server\E$\appdirectory" -Recurse).FullName.Replace("\\$Server",'')
        }
        Compare-Object @CompareArgs
    }
    

    为了更进一步,我实际上在我的答案范围之外的参考服务器's file list with the rest of the distribution, but that'上使用 Get-FileHash .

相关问题