No PowerShell sempre existe um caminho alternativo.
Com esta árvore inicial (no ramdrive A:):
PS A:\> tree . /F
A:\
├───A
│ 10.txt
│ 2.txt
│ zxc.txt
│
└───B
1.txt
10.txt
2.txt
asd.txt
asdfg.txt
zxc.txt
Esse único liner produz:
PS A:\> gci B|?{! (test-path ("A\$($_.Name)"))}|rm -whatif
What if: Performing the operation "Remove File" on target "A:\B.txt".
What if: Performing the operation "Remove File" on target "A:\B\asd.txt".
What if: Performing the operation "Remove File" on target "A:\B\asdfg.txt".
A versão mais detalhada (! não é igual):
Get-ChildItem B|Where-Object {! (Test-Path ("A\$($_.Name)") ) }|Remove-Item
Não há vars apenas na tubulação (na condição)