2016-03-29 11 views
1

うまくいけば、そのタイトルに正しく言いました。Powershellを使ってファイルに時間を動的に追加する方法

トランスクリプトファイルには必要な情報が表示されないため、特定のイベントを一目で確認できるようにする必要があるため、ログファイルとして使用している追加ファイルを追加しています。

各行の先頭に時間を追加したいと思っていますが、スクリプトの先頭で取得した時間がかかるだけで何度も繰り返し使用されます。

スクリプト:

02:43:52 First line 
02:43:52 Second line 

は非常によくこれを行う方法はありませんが、思考:これは完全な分間寝ていても、私が手に出力され

start-transcript -path "C:\temp\transcript $(get-date -f dd-MM-yyyy).txt" 
$log = "c:\temp\log $(get-date -f dd-MM-yyyy).txt" 
$logtime = Get-Date -Format "hh:mm:ss" 

Write-output "$logtime First line" | add-content $log 
start-sleep -s 60 
Write-output "$logtime Second line" | add-content $log 

stop-transcript 
exit 

私はとにかくそれを撃つだろう。

ありがとうございました。

答えて

2

代わりに出力するたびに$ logtimeに割り当てることができますか?

$logtime = [System.DateTime]::Now 

このメソッドは、現在の時刻を取得することを約束します。

編集して、Get-Dateに再割り当てした提案が削除されました。

+0

悲しいことに、 '3時14分34秒 まずライン 3時14分34秒 セカンドline' – Chris

+0

はここで別のは、指があなたのために交差させてみます。また、新しい行にこの方法で行われるたびにそれを置きます! – Willcodeforfun

+0

ああ、私の間違い!私はあなたがするつもりだと思った: 'write-output $ logtime"最初の行 "| add-content $ log'となる。 '$ logtime = Get-Date -Format" hh:mm:ss "'または '$ logtime = [System.DateTime] :: Now'を' $ logtime'変数を呼び出す前に追加すると、実際に動作します。これはお尻に大きな痛みですが、私はカスタマイズされたログファイルのために支払う価格だと思います!助けてくれてありがとう、本当に感謝しています。 – Chris

1

最終的なコード、「Willcodeforfun」に感謝:私は(乱雑に見える)敗北のこの種のことを変数の目的を感じ、私の全体のスクリプトを使用して追加することが痛いですが

start-transcript -path "C:\temp\transcript $(get-date -f dd-MM-yyyy).txt" 
$log = "c:\temp\log $(get-date -f dd-MM-yyyy).txt" 

$logtime = Get-Date -Format "hh:mm:ss" 
Write-output $logtime "First line" | add-content $log 
start-sleep -s 60 
$logtime = Get-Date -Format "hh:mm:ss" 
Write-output $logtime "Second line" | add-content $log 

stop-transcript 
exit 

、それは仕事をしていません最終結果をすっきりと読みやすくします。

上記は「Willcodeforfun」で撮影されていませんが、実際の現在時刻を取得するために変数を使用できないことをPowershellsが突き止めています。

1

あなたがやりたいことのための機能を書く。

function Write-Log1 ($message, $logfile) 
{ 
    $logtime = Get-Date -Format "hh:mm:ss" 
    Write-Output "$logtime $message" | Add-Content $logfile 
} 

function Write-Log2 ($message) 
{ 
    $logfile = Join-Path "c:\temp\log" "$(get-date -f dd-MM-yyyy).txt" 
    $logtime = Get-Date -Format "hh:mm:ss" 
    Write-Output "$logtime $message" | Add-Content $logfile 
} 


# call like this: 

Write-Log1 "First line" $log 
Write-Log1 "Second line" $log 

# if you want, hard code the log inside the function 

Write-Log2 "First line" $log 
Write-Log2 "Second line" $log 

一部の検索では、同様のパターンのより詳細な例を見つけることができます。

関連する問題