当使用-File时,PowerShell开关语句使用什么编码?

当使用-File时,PowerShell开关语句使用什么编码?,powershell,Powershell,当使用-File时,PowerShell开关语句使用什么编码?它基本上是从一个文件中读取,所以我希望对应用于读取字节的编码进行一些控制 我的意思不是获取内容等,而是切换语句,例如: switch -File ~\Desktop\demo.md -Regex { '^$' { 'Blank line' } '^#\s(.*)$' { 'Heading' } '^-(.*)$' { '

当使用-File时,PowerShell开关语句使用什么编码?它基本上是从一个文件中读取,所以我希望对应用于读取字节的编码进行一些控制

我的意思不是获取内容等,而是切换语句,例如:

switch -File ~\Desktop\demo.md -Regex
{
    '^$'
    {
        'Blank line'
    }

    '^#\s(.*)$'
    {
        'Heading'
    }

    '^-(.*)$'
    {
        'Bulleted list'
    }

    default
    {
        'Normal line'
    }
}

根据定义,将读取的字节转换为解释的字符会使用某种编码,对吗?

交换机中的-file选项很少使用,但它确实提供了速度和内存使用优势。据我所知,确切的编码目前还没有记录在案

我们在PowerShell in Action第三版第171页上使用的示例使用Out文件创建我们将在switch语句中使用的文件。Out文件默认为Unicode,因此我将假设开关文件也使用Unicode

如果需要控制编码,或者文件似乎无法正确读取,请恢复使用Get Content


我再说一遍,我对Unicode的假设是基于PowerShell帮助系统信息,而不是任何明确的知识。

您能更具体一点吗?哪个cmdlet?Get childItem使用
-File
,但不读取文件内容。获取内容读取这些文件并使用ASCII作为默认值。你是否看到与此相矛盾的行为?你能展示一些例子和你正在使用的ps版本吗?由于get content可以阅读多种格式,我建议它做一些自动计算。至少.net是这样。我猜他可能有一个文件格式不对。。。也许用基本字符开始文件,然后不在输入中包含该行可以解决这个问题,也许?像
getcontentfile.txt{$\ne“text of first line”}
重新阅读您刚才非常感谢的响应。看起来你是对的,但我不太确定你的答案,因为正如你所写的,它是基于一个假设。我会继续寻找你是对的具体证据;-),如果我发现什么,我会在这里报告。