我编写了一个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
。
如何解决计划任务中的字符编码问题?
答案 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输出正确。