gpt4 book ai didi

powershell - 替换比较对象中 SideIndicator 的箭头

转载 作者:行者123 更新时间:2023-12-02 17:25:22 30 4
gpt4 key购买 nike

我可以将 Compare-Object 结果的 SideIndicators 输出更改为对标准用户更友好的输出吗?

我有一个脚本,可以比较我们软件 2017 版本和当前 2018 版本的文件夹。

$var1 = Get-ChildItem -Recurse -path C:\software18\bin
$var2 = Get-ChildItem -Recurse -path C:\software17\bin
Compare-Object -ReferenceObject $var1 -DifferenceObject $var2 > C:\diff.txt

输出如下所示:

InputObject           SideIndicator
----------- -------------
thing.dll =>
stuff.dll <=
software.exe <=

该报告已提供给测试人员,如果我可以将 SideIndicators 更改为文本,那么对他们来说会更清晰。

我想要的输出:

InputObject           SideIndicator
----------- -------------
thing.dll Not in 18
stuff.dll Not in 17
software.exe Not in 17

或者类似的东西,他们可以得到它的要点,而不必知道哪个是引用/差异对象。

我有一个初步的想法,但搜索类似的东西并没有产生很多结果。不知道我是否必须执行 if 循环或者我可以替换 PS 中的括号。对 PS 还很陌生,所以我非常感谢您的帮助!

最佳答案

您可以循环每个对象,为每个侧面指示器创建一个条件:

$var1 = Get-ChildItem -Recurse -path C:\software18\bin
$var2 = Get-ChildItem -Recurse -path C:\software17\bin
(Compare-Object -ReferenceObject $var1 -DifferenceObject $var2 -PassThru |
ForEach-Object {
if ($_.SideIndicator -eq '=>') {
$_.SideIndicator = 'Not in 18'
} elseif ($_.SideIndicator -eq '<=') {
$_.SideIndicator = 'Not in 17'
}
$_
}) > C:\diff.txt

或者您可以使用正则表达式一步替换字符串:

$var1 = Get-ChildItem -Recurse -path C:\software18\bin
$var2 = Get-ChildItem -Recurse -path C:\software17\bin
(Compare-Object -ReferenceObject $var1 -DifferenceObject $var2 -PassThru |
ForEach-Object {
$_.SideIndicator = $_.SideIndicator -replace '=>','Not in 18' -replace '<=','Not in 17'
$_
}) > C:\diff.txt

关于powershell - 替换比较对象中 SideIndicator 的箭头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50629195/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com