我正在尝试将脚本输出重定向到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答案 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代替插入符号。