PowerShell Out-File



我对PowerShell脚本相当陌生。 我创建了一个非常简单的脚本,该脚本通过管道传输几个命令,并以不同的颜色显示在屏幕上以获得不同的结果。 我想获取屏幕上的数据并将其全部放入txt文件中,最终我将用于Zabbix警报。

脚本执行并创建 txt 文件,但 txt 文件为空。 任何帮助都会很棒!

法典:

Get-MailboxServer | Get-MailboxDatabaseCopyStatus | ForEach {
if ($_.Status.ToString() -notmatch "Mounted" -or $_.ContentIndexState.ToString() -notmatch "Healthy") {
Write-Host "$($_.Name) - $($_.Status) - $($_.ContentIndexState) - OK" -ForegroundColor Green
} else {
Write-Host "$($_.Name) - $($_.Status) - $($_.ContentIndexState) - FAILED" -ForegroundColor Red
}     
} | Set-Content | Out-File c:scriptsexchangedb.log

一般规则是write-host,只能写入主机(PowerShell 控制台(,不能发送到任何其他输出! 如果要创建输出并将其存储到文件中,可以使用write-outputcmdlet ...选项一。 或选项 2:使用两个操作:1. 写入主机,然后 2.输出到文件 ..

还有另一个提示,在这种情况下无需使用匹配。 如果您正在寻找平等,您可以尝试使用-eq(等于(或-ne(不等于(。注意:这些运算符不理解通配符! 如果要使用通配符,则可以选中:-like-notlike。 最后,还有-match-notmatch,它也理解正则表达式。 这没有错,只是有点开销。

您可以在此处查看有关比较运算符的更多信息: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-6

由于您不熟悉PowerShell,因此还可以查看PowerShell(或在线(中的任何about_部分。在PowerShell控制台运行:get-help about_中,您将看到大量概念主题列表,这些主题通过一个很好的示例编写得很好。同样可以在网上找到。 注意:您可能需要先运行update-help才能获得完整列表(大约 140+ 主题(。

值得一提的是:对于新手来说,您的脚本逻辑看起来很好,所以请继续努力! ;)

希望对您有所帮助!

此致敬意 伊凡

最新更新