在计划任务中运行时,“chcp”功能不起作用

时间:2018-04-24 07:27:47

标签: powershell character-encoding scheduled-tasks

我编写了一个PowerShell函数,用于按名称查找计划任务。像这样。

$null = chcp 1252
schtasks /query /v /fo csv | Where-Object { $_.TaskName -like $ScheduledTaskName }

当我自己运行该函数时,它可以正常工作,但在计划任务中运行时它不起作用。

问题在于字符编码。某些计划任务名称中包含ä和ö等字符。出于某种原因,在计划任务中运行时,chcp无法正常工作。

为了确保执行chcp,我添加了两行

chcp | Out-File $filePath -Append

确定,chcp已在函数中从850更改为1252。然后我创建了将schtasks查询结果输出到文件中的函数。

$tasks = schtasks /query /v /fo csv | ConvertFrom-Csv
$tasks | Out-File $filePath -Encoding utf8

我可以看到字符编码不正确。

$OutputEncoding默认设置为1252

如何解决计划任务中的字符编码问题?

1 个答案:

答案 0 :(得分:1)

我终于解决了这个问题。

$Encoding = 1252
try {
    [Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding($Encoding)
}
catch {
    Write-Warning 'Console OutputEncoding is not settable on older versions of PowerShell ISE.'
}
$OutputEncoding = [System.Text.Encoding]::GetEncoding($Encoding)
$null = chcp $Encoding

现在schtasks输出正确。