在两个PowerShell阵列中查找常见项

sdv*_*225 3 arrays powershell

我知道已经有一些堆栈溢出问题,但我已经尝试了很多解决方案并且不断出现同样的错误.问题是这样的:

我有2个数组(每个索引代表一个文件夹)

$originDirsArr = @(2, 257, 256, 3, 4, 10)
$tempDirArr = @(2, 257, 256, 3, 4)
Run Code Online (Sandbox Code Playgroud)

我想再次比较$ arr2 $ arr1,如果$ arr1中有东西不在$ arr2中,则删除它.即,在这种情况下,$ arr2中的10个DNE,因此该文件夹应该被删除.

这是我尝试过的:

$c = Compare-Object -ReferenceObject ($originDirsArr) `
 -DifferenceObject ($tempDirArr) -Passthru
$c
Run Code Online (Sandbox Code Playgroud)

也:

while ($t -lt $originDirsArr.length){
$originDirsArr[$t]
    if ( $tempDirArr -notContain $originDirsArr[$t]){
        "$_ does not exist in original and needs to be deleted"
    }else{
        "$_ does still exist in the temp"
    }
    $t++
}
Run Code Online (Sandbox Code Playgroud)

最后:

Compare-Object $originDirsArr $tempDirArr | ForEach-Object { $_.InputObject }
Run Code Online (Sandbox Code Playgroud)

每次我不断得到某种错误,无论是ReferenceObject还是DifferenceObject都是null.我知道它不是null因为我可以打印出内容,即使在那个例子中在t上编入索引,我仍然有内容.

在先进的感谢,任何帮助将不胜感激!

alr*_*roc 5

我也有点厌恶compare-object.由于这些是简单的数组,因此只需一个foreach循环即可-notcontains.

$originDirsArr = @(2, 257, 256, 3, 4, 10)
$tempDirArr = @(2, 257, 256, 3, 4)

foreach ($item in $originDirsArr) {
    if ($tempDirArr -notcontains $item) {
        Write-Output "Do something with $item";
    }
}
Run Code Online (Sandbox Code Playgroud)