在powershell的德国变形金刚。迭代目录不起作用

时间:2017-06-22 14:26:19

标签: powershell

我正在尝试迭代一个文件夹。它适用于所有文件夹,但不适用于包含umauts的目录。 以下脚本显示了问题所在:

$source= @("D:\XLS_Abrufe-ÜNB")
foreach ($element in $source) {
    $element
    cmd /c dir /ad /b /s $element |foreach{
        $_
    }
}

输出:

D:\XLS_Abrufe-ÜNB

D:\XLS_Abrufe-šNB\2015
D:\XLS_Abrufe-šNB\2016
D:\XLS_Abrufe-šNB\2017

如果我尝试使用这些名称,它将找不到文件夹。 任何想法如何与变音符号一起使用?

2 个答案:

答案 0 :(得分:2)

您是否想要获取D:\XLS_Abrufe-ÜNB中的所有目录?根据我的经验,cmd不能很好地处理unicode。

$source= @("D:\XLS_Abrufe-ÜNB")
Get-ChildItem $source -force |
  Where-Object { $_.IsPSContainer } |
  $_

答案 1 :(得分:1)

你正在炮轰一个外部命令,在这种情况下是cmd提示符,它使用控制台主机。在Windows中,控制台主机仍然使用代码页,因此虽然PowerShell很好地理解了该字符,但控制台主机可能不了解编码。

如果您一直使用本机PowerShell(as in TheIncorrigible1's answer),它应该可以正常工作。