Powershell ';chcp&x27;在计划任务中运行时功能不工作
我编写了一个PowerShell函数,它按名称查找计划任务。像这样Powershell ';chcp&x27;在计划任务中运行时功能不工作,powershell,character-encoding,scheduled-tasks,Powershell,Character Encoding,Scheduled Tasks,我编写了一个PowerShell函数,它按名称查找计划任务。像这样 $null = chcp 1252 schtasks /query /v /fo csv | Where-Object { $_.TaskName -like $ScheduledTaskName } 当我自己运行函数时,它工作得很好,但在计划任务中运行时,它不工作 问题在于字符编码。一些计划任务名称中包含像ä和ö这样的字符。由于某些原因,chcp在计划任务中运行时无法按预期工作 为了确保执行chcp,我添加了两行 chcp
$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
在那里我可以看到字符编码是不正确的
默认情况下,$outpunecoding
也设置为1252
我该如何解决计划任务中的字符编码问题?我终于解决了这个问题
$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
现在,请正确执行任务。我不明白您想要实现什么目标。为什么不使用UTF16(unicode)或UTF8呢。输入是什么?为什么你要强迫编码不同于unicode?嗯?可以schtasks是本机应用程序,而不是PowerShell cmdlet。1252是一种适用于字符的编码,如带有schtasks的ö和ä。UTF8编码(65001)不适用。850也是如此,当在区域设置中选择了正确的国家/地区时,Windows默认使用850。那么为什么不在MS world中使用Unicode(UTF16的别名)?对不起,什么?Word与此有什么关系?哈哈,世界不是Word!我说的是文件外编码unicode,即UTF16。