Get-Content命令Powershell理解
Get-Content command Powershell understanding
我想弄清楚为什么这些命令没有通过脚本 运行ning。但是当我手动 运行 时,它正在工作。
$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
要将内容写入文件,您需要使用 Set-Content
或 Add-Content
。在您的情况下,您需要使用 Add-Content
,因为它会像 >>
流重定向器那样附加而不是覆盖数据。 Write-Host
通常应避免在特定情况之外的 PowerShell 脚本中使用,更多关于 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 对象流引擎,而是直接发送到控制台主机,这取决于您的脚本执行环境可能不会如你所愿。
您无法重定向 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','' }
我想弄清楚为什么这些命令没有通过脚本 运行ning。但是当我手动 运行 时,它正在工作。
$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
要将内容写入文件,您需要使用 Set-Content
或 Add-Content
。在您的情况下,您需要使用 Add-Content
,因为它会像 >>
流重定向器那样附加而不是覆盖数据。 Write-Host
通常应避免在特定情况之外的 PowerShell 脚本中使用,更多关于 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 对象流引擎,而是直接发送到控制台主机,这取决于您的脚本执行环境可能不会如你所愿。
您无法重定向 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','' }