TesselatingHeckler estava certo.
Eu posso criar a expressão na hora e o seguinte está funcionando. Eu precisava escapar de todas as barras na lista de diretórios.
$colSelection = get-content "c:\scripts\selection.txt"
#$colExclusion = get-content "c:\scripts\exclusion.txt"
$colExclusion = "($((get-content "c:\scripts\exclusion.txt") -join '|' ))"
foreach ($folder in $colSelection) {
$colItems = (Get-ChildItem $folder -recurse -force | where-object {$_.FullName -notmatch $colExclusion})
foreach ($item in $colItems) {
Add-Content -Path c:\scripts\testlist.txt -Value $item.FullName
}
}