为什么write-host输出到transcript而write-information不输出? &g



这个让我很困惑,我想知道是否有人能解释一下这个问题,也许也可以用这个例子回答两个部分?

我有一个Powershell脚本,我像一个批处理文件一样运行,我有它的输出值,它从一个单独的文件中捕获到日志。这个特定的部分没有输出到我得到数据库的DB版本的成绩单中。我已经尝试了"的不同位置,使用$DBVersion自己,这是一个简单的方法来显示我有什么麻烦。例如:

## Read the DBs Extended properties
Function Get-DB_Version {
Param (
$SQLInstance,
$DBName
)
Invoke-Sqlcmd -ServerInstance $SQLInstance -Database $DBName -Query "SELECT value FROM fn_listextendedproperty(default, default, default, default, default, default, default) WHERE name = 'version'"
}
**Other Variables used are also pre-set above here **

## Get DB version
$DBVersion = Get-DB_Version -SQLInstance $SQLInstance -DBName $DBName

Start-Transcript -Path "$LogOutput$LogName" -IncludeInvocationHeader -Append 
Write-Information "
**** DEBUG INFO ****
Write-Host "Debug:"$DBVersion.value
Write-Information "Debug:"$DBVersion.value
Read-Host -Prompt "PAUSE" # This is so I can visually see the console seeing only the write-host is there as expected.
Stop-Transcript

在我的日志文件中,我得到输出:

调试:2.16.51443.5147

INFO:调试:

这告诉我,变量包含一个值作为write-host输出它,但是当使用Write-Information时,它在日志中不显示任何东西,我使用的所有其他变量都显示,为什么$DBVersion.value$DBVersion不显示任何东西?

第二部分是,为什么我必须使用:

$DBVersion.value

write-host ""引号之外?

Many thank in Advance

正如@abraham在评论中所说。我所要做的就是让引号内的变量(我的问题2)使用子表达式操作符$()展开引号内的值:Write-Host "Debug: $($DBVersion.value)"。这同样适用于您的Write-Information

这样做也解决了我原来的问题,为什么Write-Information没有输出任何东西到事务日志,我不需要改变$InformationPreference。

最新更新