将powershell脚本输出重定向到文件失败

时间:2015-11-09 19:33:27

标签: powershell

我正在尝试将脚本输出重定向到txt,但它失败了

Clear-Host
$Elementos =Get-WmiObject Win32_Battery -namespace 'root\CIMV2' 
foreach ($Elemento in $Elementos) { 
$Elemento.BatteryStatus 
$Elemento.EstimatedChargeRemaining 
$Elemento.EstimatedRunTime}     >C:\temp\Prueba.txt

脚本的结果是正确的

2

100

71582788

结果错误是:

  

“术语'>'不被识别为cmdlet的名称,函数,   脚本文件或可执行程序。检查您是否输入了名称   正确,或者如果包含路径,请验证路径是否正确   再试一次。出版7字符:2   + GT; <<<< C:\ temp \ Test.txt        + CategoryInfo:ObjectNotFound:(>:String)[],CommandNotFoundException        + FullyQualifiedErrorId:CommandNotFoundException“

我不能说路径是正确的。

如果我跑的话:

PowerShell(Get-WmiObject win32_battery).estimatedChargeRemaining> C:\ TEMP \ Prueba.txt

运行正常

知道我做错了吗?

提前致谢。

亲切的问候。

Emilio Sancha MS Access MVP 2006-2011

2 个答案:

答案 0 :(得分:3)

您无法管道ForEach循环的输出。您可以在变量中捕获它,或者在循环内部管道内容,但是通常不能管道整个循环的输出。你可以试试几件事......

从变量中捕获循环中的所有输出,然后将该变量输出到文件:

Clear-Host
$Elementos =Get-WmiObject Win32_Battery -namespace 'root\CIMV2' 
$Output = foreach ($Elemento in $Elementos) { 
    $Elemento.BatteryStatus 
    $Elemento.EstimatedChargeRemaining 
    $Elemento.EstimatedRunTime
}
$Output>C:\temp\Prueba.txt

或者你可以在循环中输出:

Clear-Host
$Elementos =Get-WmiObject Win32_Battery -namespace 'root\CIMV2' 
foreach ($Elemento in $Elementos) { 
    $Elemento.BatteryStatus>>C:\temp\Prueba.txt
    $Elemento.EstimatedChargeRemaining>>C:\temp\Prueba.txt
    $Elemento.EstimatedRunTime>>C:\temp\Prueba.txt
}

或者在您的情况下,您可以使用Select命令并将其输出到文件

Clear-Host
$Elementos =Get-WmiObject Win32_Battery -namespace 'root\CIMV2' 
$Elementos | Select BatteryStatus,EstimatedChargeRemaining,EstimatedRunTime | Export-CSV C:\Temp\Prueba.txt -notype

答案 1 :(得分:-2)

使用Out-File代替插入符号。

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