web-dev-qa-db-ja.com

ログ文字列を作成するためのPowerShellでのget-dateの使用

スクリプトでこれらの行を使用して、最終的にログファイルに記録する情報を書き込みます。

$log = "some text: "
$log += Get-Date
$log += "; some text"

このようにしてデータを正しく取得するので、出力はsome text: 02/13/2013 09:31:55; some textになります。この結果を取得するためのより短い方法はありますか?私はこのようなものを意味します(それは実際には機能しません)

$log = "some text: " + Get-Date + "; some text"
9
Naigel

試してみてください:

_$log = "some text: $(Get-Date); some text"
_

$()は、関数または変数のプロパティから値を展開します。文字列内にある場合は$($ myvar.someprop)。

22
CB.

このための関数を作成しました:

関数

function log ($string, $color) {
    if ($color -eq $null) { $color = "White" }
    if (Test-Path ".\logs") {} else { new-item ".\logs" -type directory | out-null }
    Write-Host $string -Foreground $color
    "$(get-date -Format 'hh:mm, dd/MM/yyyy') - $($string)" | Out-File .\logs\$(Get-Date -Format dd-MM-yyyy).log -Append -Encoding ASCII 
}

例:

# colours are named by function to make console output more organised
$c_error = "Red"
$c_success = "Green"
$c_check = "Cyan"
$c_logic = "Yellow"

log "Starting loop" $c_logic
log "Checking files" $c_check
log "error detected" $c_error
log "File successfully cleaned" $c_success
2
Vasili Syrakis

別の方法はこれです:

$log = "some text: {0}; some text" -f (Get-Date)
1
Dave Sexton