获取内容命令Powershell了解

时间:2017-09-29 21:42:33

标签: powershell powershell-v2.0

我试图弄清楚为什么这些命令不是通过脚本运行的。但是,当我手动运行它时,它正在工作。

$value = Get-Content c:\info.txt | select-string Id | Foreach-Object { $_.ToString().split(':')[1] -replace '\s','' } 
Write-Host "$value" >> c:\list.txt

我尝试使用>>重定向但仍然没有信息在变量$ value

中更新
Get-Content c:\info.txt | select-string Id | Foreach-Object { $_.ToString().split(':')[1] -replace '\s','' } >> $value
    Write-Host "$value" >> c:\list.txt

2 个答案:

答案 0 :(得分:0)

要将内容写入您希望使用Set-ContentAdd-Content的文件。在您的情况下,您会想要使用Add-Content,因为它会附加而不是像>>流重新导演那样覆盖数据。在特定情况之外的PowerShell脚本中通常应该避免使用Write-Host,而不是here

$value = Get-Content c:\info.txt | select-string Id | Foreach-Object { $_.ToString().split(':')[1] -replace '\s','' }
Add-Content -Path C:\list.txt -Value $value

Write-Host在脚本中没有产生任何输出的原因是因为它绕过将对象发送到PowerShell对象流引擎而不是直接发送到控制台主机,这取决于您的脚本执行环境可能不是什么你期待。

答案 1 :(得分:0)

您无法重定向Write-Host。你需要删除它。以下示例将执行您的要求:

Get-Content "C:\info.txt" | select-string Id | Foreach-Object { $_.ToString().Split(':')[1] -replace '\s','' } >> "C:\List.txt"

...虽然我不确定字符串操作的用途,因为我不知道C:\ Info.txt的内容是什么样的。

如果您只想将输出放入$value而不是重定向到文件,您可以这样写:

$value = Get-Content "C:\info.txt" | select-string Id | Foreach-Object { $_.ToString().Split(':')[1] -replace '\s','' }