使用Powershell导入中文域名网站

Use Powershell to import website with Chinese domain

我正在尝试使用 PowerShell 从 xml 文件添加网站。

当我只使用CMD命令时

appcmd  add site /in < test.xml

网站绑定为「测试.com.tw」,一切正常。

但是当我使用 Powershell 时

Get-Content test.xml | appcmd add site /in 

绑定将是「???.com.tw」

即使我在获取内容时将chcp改为65001或使用“-encoding utf8”,也没有任何改变,仍然无法正确导入中文域名的网站。

我的服务器是 2008 R2 和 Powershell 1.0

有人知道我该如何解决吗?

PowerShell 使用 $OutputEncoding preference variable 来确定在通过管道(什么外部程序通过标准输入流 stdin 接收。

在WindowsPowerShell中,$OutputEncoding默认为ASCII(!),意思是只正确发送7位ASCII中的字符,所有超出该范围的字符都替换为文字 ? 个字符。

您必须设置 $OutputEncoding 以匹配 appcmd 从 stdin 读取时期望的编码;根据您的反馈,必须使用 UTF-8:

$OutputEncoding = [System.Text.Utf8Encoding]::new($false) # BOM-less UTF-8

Get-Content test.xml | appcmd add site /in 

# Consider restoring the previous $OutputEncoding value

注意:以上假设 Get-Content 在读取时正确识别 test.xml 的编码;如果不是,请使用其 -Encoding 参数明确指定文件的编码。

作为补充,当PowerShell 读取输出来自外部程序时,它是存储在[=20=中的编码] 确定输出的解码方式 - 请参阅 .