回答
Write-host
只将输出重定向到控制台。
您可以使用write-output
和重定向到文件(> export.txt
或管out-file export.txt
)
在当你确实需要重定向从脚本的所有输出来看看这个cmdlet的
start-transcript
get-help start-transcript -full
在PowerShell script > export.txt
是语法糖为script | Out-File -path export.txt
。
写主机将对象发送给主机,并且它不返回任何对象。这意味着没有对象传送到Out-File cmdlet,并且没有任何内容写入到export.txt文件中。解决方法(如果您不想更改脚本)是打开cmd
控制台并使用cmd控制台重定向重定向PowerShell输出。
C:\> powershell .\script.ps1 > .\export.txt
我忘记说有一个Exchange命令是:Get-MailboxServer C:\> powershell。\ script.ps1>。\ export.txt 术语'Get-MailboxServer'不被识别为cmdlet ,功能,可操作 程序或脚本文件。验证该字词并重试。 谢谢 – expirat001 2012-02-15 14:49:41
尝试在脚本开始时连接到交换远程运行空间配置。 '$ session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http:// $ computername/powershell; import-pssession $ session'。如果遇到问题,请考虑提出一个新问题,因为这个问题与最初的问题无关。 – 2012-02-15 15:47:20
不同方法的有效性在很大程度上要根据你的使用情况,当然,但......
“正确”的方式做到这一点,我相信,如果你有控制的脚本(这是我通常所做的,尽管我承认我今天正在寻找一个快捷方式),是“过载”Write-Host
,可以这么说,,然后发送一切你会发送到Write-Host
到这个新功能。
只是为了保持有效的PowerShell动词,我打电话给我的我的Write-Feedback
。
function Write-Feedback()
{
param
(
[Parameter(Position=0,ValueFromPipeline=$true)]
[string]$msg,
[string]$BackgroundColor = "Yellow",
[string]$ForegroundColor = "Black"
)
Write-Host -BackgroundColor $BackgroundColor -ForegroundColor $ForegroundColor $msg;
}
好,你现在基本上等同于Write-Host
进行动作的功能,但你可以很容易地控制,其中输出变。如果您需要写入文件,您可以编辑Write-Feedback
,以便其所有呼叫现在都可以执行您所需的任何操作。
你可以行简单地更改为Write-Output
,这取决于你在做什么都顺着管道...
...
Write-Output $msg;
您可以将输出发送到你的管道相同的文件该命令的休息,但Write-Feedback
函数中,甚至保持写主机太:
function Write-Feedback()
{
param
(
[Parameter(Position=0,ValueFromPipeline=$true)]
[string]$msg,
[string]$BackgroundColor = "Yellow",
[string]$ForegroundColor = "Black"
)
Write-Host -BackgroundColor $BackgroundColor -ForegroundColor $ForegroundColor $msg;
$msg | Out-File "./export.txt" -Append; # <<< or add a param to location
}
或者,如果你有一些异常值,你不希望Write-Feedback
内容,通过管道输送到一个文件,你可以添加一个新的o要求怎么处理每个特定的Write-Feedback
调用,你switch
关闭 - 发送到文件,到Write-Host
,到Write-Output
等 - 将默认值更改为您通常需要的值,并明确地将switch
从新的参数在哪里明确设置。
等等将所有呼叫路由到PowerShell中输出的集中交换中心,这非常容易。然后当你改变你的想法时,这不是一个巨大的搜索和替换 - 而是取代了后面的任务。
我认为这里唯一的痛苦就是如果你不想发送流水线的东西,所以Write-Output
已经不存在了,但是确实想要确保文件Write-Feedback
写入的文件与你在您的示例中的> export.txt
每次都不编辑Write-Feedback
。我不确定是否有简单的方法来做到这一点。
但是,既然您已经从“管道步骤”中移除了一步,那可能不是合法的用例。
无论如何,底线是超载Write-Host
并做任何你想通过编辑在一个地方。
- 1. 写主机输出没有被重定向到日志文件
- 2. R,将文件导出到主题
- 3. 添加主机到主机文件
- 4. 隐藏写主机输出
- 5. shell脚本到grep不同的主机上的日志,写grepped输出到文件上的主机1
- 6. 写主机与写输出 - 换行
- 7. PHP - 写入主机文件编程
- 8. 导出CSV文件,并得到<br>作为<BR>
- 9. Vagrant-> Ansible:找不到主机文件,提供的主机列表为空,没有主机匹配
- 10. 文件写入输出从机器到机器的变化
- 11. python subprocess登录到主机创建文件夹并退出主机
- 12. Powershell写主机追加到文本文件 - 计算机名称和时间戳
- 13. JMeter导出图形到CSV导出到多列,写结果到文件导出到一列
- 14. 当文件>>另存为...时,文件>>导出总是冗余的?
- 15. FFmpeg的“movflags”>“的fastStart”导致无效MP4文件写到
- 16. 导入导出herokuapp数据到本地主机
- 17. 主机名未出现在文件中
- 18. 写输出到文件
- 19. 写出xmlwriter到文件
- 20. 写pickle.dumps输出到文件
- 21. PFX文件导入到在C#中的虚拟主机店
- 22. 批处理文件 - 环平 - 输出到文件均达到主机
- 23. 随机书写顺序输出文件?
- 24. powershell,写主机的文件的所有文件名
- 25. 随机输出到文件
- 26. PowerShell写入主机和写入输出到控制台的不同输出
- 27. 如何获得写主机输出$ true
- 28. 写入CSV文件并将其导出?
- 29. 将主机添加到Ansible主机文件
- 30. WebMatrix主机文件
关于它的最终解决方案? – Kiquenet 2013-04-09 10:08:40