我有以下两个脚本。我想在
中创建一个带有结果的文本文件a)相同的目录是原始执行或
b)在c:目录
上1)
$sum = 0
foreach ($i in dir -filter *.log -Rec)
{
$sum += (gc $i.fullname | select -Skip 5 | ConvertFrom-Csv -Delimiter "`t" | ? {$_.Details -match "^(\d+)"} |% {$matches[1]} | Measure-Object -Sum).Sum
}
$sum
[Console]::Write("Press any key to continue . . . ")
[Console]::ReadKey()
2)
foreach ($i in dir -filter *.log -Rec)
{
$cameras = gc $i.fullname | select -Skip 5 | ConvertFrom-Csv -Delimiter "`t" | group "Entity "
$cameras | select Name, @{n="Total";e={ ($_.group | ? {$_.Details -match "^(\d+)"} |% {$matches [1]} | Measure-Object -Sum).Sum}} | ? {$_.Total -gt 0}
}
[Console]::Write("Press any key to continue . . . ")
[Console]::ReadKey()
答案 0 :(得分:1)
@Chris Browne说的是你可以使用CmdLet Out-File
我添加的内容是获取脚本执行目录:
$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path;
$textFileName = $scriptPath + "\yourfile.txt"
$sum | out-file -FilePath $textFileName
答案 1 :(得分:0)
我相信您正在寻找的cmdlet称为Out-File。
答案 2 :(得分:0)
将$ sum或$ cameras传递给Out-File cmdlet。要在当前目录中创建文件,只传递文件名。要在C:驱动器中创建它,请传递完整路径:
$sum | Out-File -Path Results.txt
or
$sum | Out-File -Path .\Results.txt
or:
$sum | Out-File -Path C:\Results.txt
顺便说一句,您可以使用Write-Host cmdlet(而不是[Console] :: Write)将消息写入控制台,并等待使用Read-Host cmdlet按键(而不是[Console] :: ReadKey)。