2011-06-12 90 views
0

我有以下两个脚本。我想有结果创建一个文本文件中任一脚本结果>文本文件

一)相同的目录是在原单的执行发生或

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

我相信你要找的cmdlet叫做Out-File。

http://technet.microsoft.com/en-us/library/ee176924.aspx

+0

Chris,你能告诉我如何将脚本添加到脚本中吗? – Sam 2011-06-12 07:08:32

+0

你必须将循环的结果赋值给一个变量然后管道到Out-File,如下面的例子: (道歉为格式不好,我不习惯stackex呢) $ NumArray =(1..12) $(foreach($ number in $ NumArray){$ number * 7})| set-variable 7x $ 7x #通过删除下一行#选项研究属性 #$ 7x | Out-File – 2011-06-12 07:24:35

+0

对不起克里斯,我失去了 – Sam 2011-06-12 07:48:11

1

事情@克里斯·布朗说的是,你可以使用cmdlet的出文件

我想补充的一点是让脚本执行目录:

$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path; 
$textFileName = $scriptPath + "\yourfile.txt" 
$sum | out-file -FilePath $textFileName 
+0

那么你能告诉我如何在上面的两个脚本中使用这个吗? – Sam 2011-06-12 08:18:40

+0

你可以使用它,只需在foreach循环后执行即可 – Matt 2011-06-12 09:00:17

0

管$总和或$相机添加到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 

顺便说一句,你可以用写主机小命令(而非[控制台] ::写消息写入到控制台,并等待对于使用Read-Host cmdlet(而不是[Console] :: ReadKey)的按键,