PowerShellスクリプトでログファイルに出力を書き込む
単純なテキストログファイルを使用して、PowerShellスクリプトのすべてのアクティビティの実行と追跡を制御できます。これは、エラーをデバッグしたり、スクリプトアクションを監査したりするときに役立ちます。この記事では、テキストログファイルに出力を書き込むことにより、PowerShellスクリプトのログインを使用するいくつかの方法を示します。
最も単純なケースでは、情報メッセージまたはPowerShellコマンドの結果の出力をテキストログファイルに書き込みたい場合は、次のいずれかの形式を使用して、PS出力をテキストファイルにリダイレクトできます。
Write-Output "Files are successfully created in $env:computername" >> C:\PS\Logs\TestLog.txt
Add-Content -Path C:\PS\Logs\TestLog.txt -Value "Files are successfully created in $env:computername"
"Files are successfully created in $env:computername" | Out-File -FilePath C:\PS\Logs\TestLog.txt –Append
いずれの場合も、コマンドは指定したテキストを含む新しい行をtxtファイルに追加します。
ログファイルの内容を毎回上書きする場合は、Set-Content
を使用してください。 コマンドレット。
この方法の主な欠点は、エントリがいつログに書き込まれたか(イベントが発生したか)を把握できないことです。現在のタイムスタンプをログファイルに追加できます。スクリプトが実行され、特定のイベントが発生した時刻を特定するのに役立ちます。
より便利にするために、PowerShellスクリプトに個別の関数を作成して、受信したデータをログファイルに書き込み、各イベントのタイムスタンプを追加することができます。
以下に示すような関数を作成できます:
$Logfile = "C:\PS\Logs\proc_$env:computername.log"
function WriteLog
{
Param ([string]$LogString)
$Stamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
$LogMessage = "$Stamp $LogString"
Add-content $LogFile -value $LogMessage
}
次に、 WriteLogを呼び出します 何かをログに記録したい場合に機能します。
WriteLog "The script is run"
WriteLog "Calculating…."
Start-Sleep 20
WriteLog "The script is successfully executed"
これで、ログファイルの各エントリの時刻を確認できます。
Write-Host
を置き換えることができます LogWrite
を使用した呼び出し スクリプト内のもの。 PowerShellには、PSコンソールに表示されるすべてのコマンドと出力をテキストログファイルに保存するためのトランスクリプト機能が組み込まれています。
現在のPowerShellセッションをログに記録するには、 Start-Transcript コマンドレットが使用されます。
コマンドを実行すると、すべてのコマンドの出力が記録されているファイルを示すメッセージが表示されます。デフォルトでは、ログファイルは現在のユーザープロファイルにあります:
Transcript started, output file is C:\Users\user\Documents\PowerShell_transcript.DESKTOP-P2FHTKQ.+IzDgZiN.20210908163729.txtテキストファイルへのパスは次のように指定できます。
Start-Transcript -Append C:\PS\Logs\PSScriptLog.txt
–追加 オプションは、新しいセッションがファイルの最後に(上書きせずに)ログに記録されることを示します。
結果をコンソールに出力するいくつかのPowerShellコマンドを実行します。たとえば、実行中のプロセス、サービス、およびADレプリケーションステータスのリストを表示してみましょう。
Get-Process| where-object {$_.WorkingSet -GT 500000*1024}|select processname,@{l="Used RAM(MB)"; e={$_.workingset / 1mb}} |sort "Used RAM(MB)" –Descending
Get-Service | Where-Object {$_.status -eq 'Running'}
Get-ADReplicationFailure -Target mun-dc01
現在のPowerShellセッションのログ記録を停止します:
Stop-Transcript
次に、トランスクリプトログファイルを開きます。
ご覧のとおり、ログには、コンソールで実行されたPowerShellコマンドの全履歴とすべての出力が表示されます。
すべてのエラーと警告もログに記録され、複雑なPowerShellスクリプトをデバッグするときに非常に便利です。
Start-Transcript
を使用できます およびStop-Transcript
PowerShellスクリプトのコマンドレットを使用して、すべてのアクションと出力をネイティブにログに記録します。
-
PowerShell でフォルダーとサブフォルダーを削除する方法
Windows 10 でファイルを削除するのは、パイを食べるのと同じくらい簡単です。ただし、ファイル エクスプローラーで実行される削除プロセスの所要時間は、アイテムによって異なります。サイズ、削除する個々のファイルの数、ファイルの種類など、さまざまな要因が影響します。したがって、数千の個々のファイルを含む大きなフォルダを削除するには、数時間かかる場合があります .場合によっては、削除中に表示される推定時間が 1 日を超えることもあります。さらに、ごみ箱を空にする必要があるため、従来の削除方法も少し非効率的です。 これらのファイルを PC から完全に削除します。そのため、この記事では、Windo
-
PowerShell を使用してファイルとフォルダーを削除する方法
すべてのファイルとフォルダーを手動で削除するのは面倒です。ただし、PowerShell の使い方を知っていれば、その必要はありません。この記事では、PowerShell を使用して Windows のファイルとフォルダーを削除するさまざまな方法を紹介します。 PowerShell を使用してファイルとフォルダーを削除する PowerShell は、Windows が提供する無料のコマンド自動化ツールです。簡単に言えば、コマンド プロンプト ウィンドウ内で起動するシェルの助けを借りて、オペレーティング システムをより詳細に制御するのに役立ちます。 コマンドレットとも呼ばれるコマンドレットを利