0

サーバーのスケジュールタスクを確認しようとしています。バックグラウンドジョブとリモートセッションを使用して、スクリプトの実行を高速化したいと考えています。しかし、リモートセッションでコマンドを実行すると、出力はワークステーションとは異なるカルチャ(またはエンコーディング?)になります。New-PsSessionOptionを使用しようとしましたが、結果は同じです:

  1. schtasksをローカルで実行してリモートサーバーをチェックします。出力はOKです:

    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 に答える