首页 > 解决方案 > 第一行在powershell中不输出任何内容

问题描述

我尝试在 PowerShell 中输出参数值,但它第一次没有输出任何内容。

我必须尝试多次,并且在第一次输出后总是成功。有谁知道这个问题?

这是代码test.ps1

Get-Content D:/Config.txt | Foreach-Object{    
$var = $_.Split('=')    
New-Variable -Name $var[0] -Value $var[1]
}
Write-Host $DeskTopPath -BackgroundColor black 
Write-Host $DeskTopPath -BackgroundColor green 
Write-Host $DeskTopPath -BackgroundColor blue 

配置文件

DeskTopPath=D:\Users\Test\Desktop

我的输出


D:\Users\Test\Desktop
D:\Users\Test\Desktop

我的 PowerShell 版本:5.1.14393.3471

标签: powershell

解决方案


Write-Host立即写入控制台。它不等待也不关心管道正在处理什么。它只是在创建变量之前执行得太快。您要么需要添加睡眠或延迟,要么不使用Write-Host.

Get-Content D:/Config.txt | Foreach-Object{    
$var = $_.Split('=')    
New-Variable -Name $var[0] -Value $var[1]
}
Start-Sleep -m 200
Write-Host $DeskTopPath -BackgroundColor black 
Write-Host $DeskTopPath -BackgroundColor green 
Write-Host $DeskTopPath -BackgroundColor blue 

由于运行 PowerShell 代码所涉及的变量数量众多,因此并非所有人都可以重现这一点。这将不得不反复试验。


推荐阅读