0

我正在尝试检查我的服务器上的计划任务,并且我想使用后台作业和远程会话来加速脚本的执行。但是当我在远程会话中运行我的命令时,输出的文化(或编码?)与我的工作站不同。我尝试使用 New-PsSessionOption 但结果是一样的:

  1. 本地运行 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
    
  2. 打开远程会话并在本地运行 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
    

如您所见,尽管使用了相同的文化,但输出似乎具有不同的编码。如何处理?

4

2 回答 2

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
于 2012-12-05T09:57:19.447 回答
0

我无法提供准确的答案,但请在本地和远程会话中检查 $OutputEncoding 和 [Console]::OutputEncoding。

配置远程会话以匹配工作/本地会话。

于 2012-11-23T17:06:29.920 回答