bugfix> powershell > 投稿

私は次の内容のjsonファイルを持っています-

{
"IsEnabled": true,
"EngineConfiguration": {
    "PollInterval": "00:00:15",
    "Components": [{
        "Id": "Logs",
        "FullName": "AWS.EC2.Windows.CloudWatch.CustomLog.CustomLogInputComponent,AWS.EC2.Windows.CloudWatch",
        "Parameters": {
            "LogDirectoryPath": "C:\\log\\2018-05-25",
            "TimestampFormat": "yyyy-MM-dd HH:mm:ss",
            "Encoding": "UTF-8",
            "Filter": "",
            "CultureName": "en-US",
            "TimeZoneKind": "UTC",
            "LineCount": "1"
        }
    }]
  }
}

PowerShellを使用して管理されたタスクを使用して、この日付(LogDirectoryPathで言及)を毎日置き換えたいと思います。

誰かがpowershellを使用してこれを毎日交換する最も簡単な方法を教えてもらえますか?

回答 2 件
  • このスクリプトは、ログディレクトリを更新するのに役立ちます。

    手順:

    JSONファイルのコンテンツを取得します。

    存在する場合は属性値を更新します。 $JsonData.update | %{if(...)

    同じファイルにコンテンツを保存します。

    脚本:

    $JsonData = Get-Content $JsonFilePath -raw | ConvertFrom-Json
    $JsonData.update | % { if($JsonData.engineconfiguration.Components.Parameters.LogDirectoryPath)
                                {
                                    $JsonData.engineconfiguration.Components.Parameters.LogDirectoryPath = "C:\log\$(Get-Date -Format 'yyyy-MM-dd')"
                                }
                            }
    $JsonData | ConvertTo-Json -Depth 4  | set-content $JsonFilePath
    
    

  • 最初のステップは、コンテンツをJSONに変換することです。

    $json = Convertfrom-json (get-content "\\path\To\Json\File.json")
    
    

    次に、必要に応じて値を編集します。

    $json.engineconfiguration.Components.Parameters.LogDirectoryPath = "C:\log\$(Get-Date -Format 'yyyy-MM-dd')"
    
    

    次に、ファイルに書き戻します。

    ConvertTo-Json $json -Depth 4 | Out-File C:\ProgramData\Temp\test.txt -Force
    
    

あなたの答え