我正在尝试检查服务器上的计划任务,并且我想使用后台作业和远程会话来加速脚本的执行。 但是当我在远程会话中运行我的命令时,输出的文化(或编码?)与我的工作站不同。 我尝试使用New-PsSessionOption但结果是一样的:
本地运行schtasks来检查远程服务器,输出正常:
PS>Get-Culture
LCID Name DisplayName
---- ---- -----------
1036 fr-FR French (France)
PS>schtasks -s servername /v /query /fo csv |ConvertFrom-Csv |select -first 1
Nom de l'hôte : servername
Nom de la tâche : \BITS_CCM_Incoming_{16
674A29-EDDD-43C3-9EF2-
2B2D64EFA6F5}
Prochaine exécution : 23/11/2012 22:38:00
Statut : Prêt
在本地运行schtasks打开一个远程会话:
PS>$pso = New-PSSessionOption -Culture "fr-fr"
PS>etsn servername -SessionOption $pso
[servername]: PS C:\> get-culture
LCID Name DisplayName
---- ---- -----------
1036 fr-FR Français (France)
[servername]: PS C:\> schtasks /query /v /fo csv |ConvertFrom-Csv |select -First 1
Nom de l'h"te : servername
Nom de la tƒche : \BITS_CCM_Incoming_{16674A29-EDDD-43C3-9EF2-2B2D64EFA6F5}
Prochaine ex'cution : 23/11/2012 22:38:00
Statut : Pr^t
正如你所看到的那样,虽然使用相同的文化,但输出似乎有不同的含义。如何处理?
答案 0 :(得分:1)
过了一会儿,我发现我可以使用COM对象'Schedule.Service'来检索与语言无关的任务信息:
icm -AsJob -JobName getTasks -ComputerName $servers -ScriptBlock{
$Schedule = new-object -com("Schedule.Service")
$Schedule.connect($env:computername)
$Tasks = $Schedule.getfolder("\").gettasks(0)
$Tasks | Select-Object Name,Path,State,Enabled,LastRunTime,LastTaskResult
}
$resu=wait-job getTasks |receive-job
remove-Job getTasks
$resu|sort PSComputerName
答案 1 :(得分:0)
我无法提供确切的答案,但请在本地和远程会话中检查$ OutputEncoding和[Console] :: OutputEncoding。
配置远程会话以匹配工作/本地会话。