ローカル クライアントから Exchange サーバーへの Outlook ログ (NETMON を使用) を作成する powershell スクリプトを作成しようとしています。問題は、ファイル名が正しくインクリメントされていないことです。このインクリメント スクリプトをオンラインで見つけて、そのロジックを理解しました (ちょっと)。カウンターを初期化する正しい方法を使用していますか? ファイルの名前が正しく変更されていません。2 番目のファイルに _ だけを付け、3 番目のファイルに _2 を付けてから、ファイルの名前変更を停止します。
また、invoke-expression は cmd が終了するのを待っていますか、それとも $count-- の次のステップに進みますか?
#Directory to complete script in
$path = "c:\Outlook_Logs\"
cd $path
$cmdline = "Nmcap.exe /network * /captureipv4.address==X.X.X.X /file :\outlook_logs\client_$count.chn:100MB"
#Writes out number of files in directory to console
$count = (get-childitem $path -name).count
Write-Host "Number of Files: $count"
#Sorts items by decsending order
$items = Get-ChildItem | Sort Extension -desc
#Deletes oldest file by file extension number
del $items[0]
#Copy file from original directory to backup directory
Copy-Item c:\Outlook_Logs\* c:\Outlook_Logs_Temp\
#Sorts items by decsending order
$items = Get-ChildItem | Sort Extension -desc
#Renames files in quotes after NewName argument
$items | ForEach-Object -begin { $count= (get-childitem $path -name).count } -process { rename- item $_ -NewName "client_$count.cap";Invoke-Expression "$cmdline"; $count-- }