我有两个文本文件。一个拥有域中的所有服务器(servers_all.txt),另一个只有虚拟服务器(virtual_servers.txt)。我想得到两者之间的差异所以我可以找到物理服务器。我一直在使用compare-object而无济于事
Compare-Object (gc servers_all.txt) (gc .\VIRTUAL_SERVERS.TXT) -IncludeEqual
有没有办法可以从servers_all.txt删除virtual_servers.txt中列出的服务器。
两个txt文件的格式相同,只有一列中的服务器名称,即:
ServerA
ServerB
ServerC
答案 0 :(得分:2)
比较对象有点迟钝(说得客气一点)。我避免它。
$VirtualServers = Get-Content .\VIRTUAL_SERVERS.TXT;
$NonVirtualServers = Get-Content servers_all.txt | Where-Object { $_ -notin $VirtualServers };
这里唯一需要注意的是文件格式错误,如前导或尾随空格。如果你想处理它,你可以做类似的事情:
$VirtualServers = Get-Content .\VIRTUAL_SERVERS.TXT | ForEach-Object { $_.Trim() };
$NonVirtualServers = Get-Content servers_all.txt | ForEach-Object { $_.Trim() } | Where-Object { $_ -notin $VirtualServers };
答案 1 :(得分:0)
$all = 'a','b','c','d'
$virtual = 'b','c'
Compare-Object $all $virtual -PassThru
- >
a
d