此问题已在此处有答案:
PowerShell output is crossing between functions(1个答案)
上个月关门了。
我正在尝试编写一个PowerShell脚本,将使用Write-Host
命令几次。当我运行脚本时,我得到Write-host
的输出,然后是命令本身的输出。我已经看过和谷歌这个问题,但没有喜悦。这是剧本,如果有人可以帮助?
#Use this script to find all acounts in the External Contractors OU with accounts that have expired and will expire with in the next 365 days
$cred = Get-Credential
Write-Host "Accounts due to expire in the next 365 days" -ForegroundColor red -BackgroundColor white
Search-ADAccount -Server teeis0002.europe.tel.com -Credential $cred `
-searchbase "OU=External Contractors,OU=Users,OU=xxxxxx,DC=xxxxxx,DC=xxxxxx,DC=xxxxx" `
-AccountExpiring -TimeSpan 365.00:00:00 -UsersOnly -ResultPageSize 2000 -resultSetSize $null |
Select-Object Name, UserPrincipalName, DistinguishedName, AccountExpirationDate |
Sort-Object -Property AccountExpirationDate
Write-Host "Currently Expired Accounts" -ForegroundColor red -BackgroundColor white
Search-ADAccount -Server teeis0002.europe.tel.com -Credential $cred `
-searchbase "OU=External Contractors,OU=Users,OU=xxxxxx,DC=xxxxxx,DC=xxxxxx,DC=xxxxx" `
-AccountExpired -UsersOnly -ResultPageSize 2000 -resultSetSize $null |
Select-Object Name, UserPrincipalName, DistinguishedName, AccountExpirationDate |
Sort-Object -Property AccountExpirationDate
字符串
我研究了使用Do While和For each
2条答案
按热度按时间xriantvc1#
如果你想强制命令管道的输出在其他任何事情发生之前呈现在屏幕上,可以通过管道传输到
Out-Host
:字符串
mqkwyuun2#
如果我对您的问题理解正确的话,您希望抑制除
Write-Host
行以外的所有命令输出。在PowerShell中,您有几个选项:
1.您可以将Cmdlet结果保存到变量。如果您怀疑在脚本的后面可能需要这些信息,这通常是有意义的,例如。
字符串
1.你也可以使用
[void](Verb-Noun)
来保持你的终端屏幕干净,这会将输出转换为void
。实际上有很多不同的方法可以做到这一点,虽然它们在技术上可能不做完全相同的事情,但对于所有意图和目的,它都在做你想要它做的事情:型
但是有时候,如果您还想抑制错误消息,那么这可能还不够(尽管您应该仔细考虑这是否是您真正想要做的事情,但这不是这里的重点)。
错误消息应该写入错误流。你可以阅读更多关于流here .
型