我目前有一个用于检查注册表的脚本,如果该注册表项存在,则它将向控制台输出一个值。 如何修改此脚本,以便将每个输出保存到变量,然后将该变量导出到text / csv文件?
if ((Get-ItemPropertyValue -Path "HKLM:\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE" -Name HelpPane.exe) -eq '1')
{
Write-Output 'Yes'
}
else
{
Write-Output 'No'
}
if ((Get-ItemPropertyValue -Path "HKLM:\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_DISABLE_SQM_UPLOAD_FOR_APP" -Name iexplore.exe) -eq '1')
{
Write-Output 'Yes'
}
else
{
Write-Output 'No'
}
if ($Host.Name -eq "ConsoleHost")
{
Write-Host "Press any key to continue..."
$Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyUp") > $null
答案 0 :(得分:3)
为此使用Tee-Object
,它会通过管道移动数据并将其保存到文件中。
$content | Tee-Object -FilePath C:\some\path\on\disk.txt
这将获取变量$content
,将其通过管道传输到Tee-Object
,后者将输出写入文件,然后获取相同的输出并通过管道将其推送。在这种情况下,您应该看到$content
也被写入输出流,但是如果您选择这样做,也可以将其传递到管道中的另一个cmdlet。
答案 1 :(得分:0)
您有选择。
同时存储和显示PowerShell变量的3种方法
# Using -OutVariable parameter
Get-Process a* -OutVariable process
# PowerShell Variable squeezing
($process = Get-Process a*)
# Using Tee-Object Cmdlet
Tee-Object Cmdlet T’s results to o/p stream and Variable $process at the same time
要点: 除非使用屏幕文本着色,否则避免使用Write-Host / echo。几乎没有理由将其用作屏幕输出是PowerShell的默认设置。
此外,如果您打算在线路/管道等处使用数据,则Write-Host清空缓冲区,然后数据就消失了。好吧,这取决于您所使用的PowerShell版本。
资源:
来自Powershell的创建者。
写主机被认为有害
http://www.jsnover.com/blog/2013/12/07/write-host-considered-harmful
...截至2016年5月,Jeffrey Snover改变了立场。
使用PowerShell v5 Write-Host不再“杀死幼犬”。数据是 捕获到信息流中...
您的代码中没有Write-Host内容。
if ((Get-ItemPropertyValue -Path 'HKLM:\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE' -Name HelpPane.exe) -eq '1')
{'Yes'}
else {'No'}
if ((Get-ItemPropertyValue -Path 'HKLM:\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_DISABLE_SQM_UPLOAD_FOR_APP' -Name iexplore.exe) -eq '1')
{'Yes'}
else { 'No'}
if ($Host.Name -eq "ConsoleHost")
{
'Press any key to continue...'
$Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyUp') > $null
}
最后,请注意报价。简单字符串的单引号,变量扩展或其他特定字符串处理的双引号。
如帮助文件和其他资源中所定义:
about_Quoting_Rules-PowerShell |微软文档
PowerShell报价规则的故事
https://trevorsullivan.net/2016/07/20/powershell-quoting
Windows PowerShell报价