【问题标题】:Why does write-host output to transcript but write-information does not?为什么 write-host 输出到成绩单但 write-information 没有?
【发布时间】:2021-08-19 22:00:47
【问题描述】:

这让我很困惑,想知道是否有人可以对此有所了解,也许也可以用这个例子回答两部分?

我有一个 Powershell 脚本,我像批处理文件一样运行,我将它从单独的文件中捕获的值输出到日志中。这个特定部分没有在我获得数据库版本的成绩单中输出。我尝试了" 的不同位置,单独使用$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

信息:调试:

这表明该变量包含一个值作为写入主机输出它,但是当使用Write-Information 时它不会在日志中显示任何内容,我使用的所有其他变量都会显示,为什么$DBVersion.value 或@ 987654326@什么都不显示好吗?

还有第二部分,我为什么要使用:

$DBVersion.value

write-host "" 引号之外?

非常感谢提前

【问题讨论】:

  • 简单地说,它被解读为 2 个单独的命令,而不仅仅是一个。因此,它首先运行Write-Host "....",然后运行$DBVersion.Value。如果您希望它在同一行中,则需要将变量 inside 引号,然后使用子表达式运算符$() 扩展引号内的值:Write-Host "Debug: $($DBVersion.value)"。您的Write-Information 也是如此。
  • 除了 Abraham 的有用评论,您不需要这些 cmdlet,但无论如何,Write-Information 本身不会产生任何输出,您需要将 $InformationPreference = 'Continue' 设置为脚本顶部或使用-InformationAction Continue 参数。

标签: powershell logging write-host


【解决方案1】:

正如@abraham 在 cmets 中所说。我所要做的就是让引号内的变量(我的问题 2)是使用子表达式运算符$() 来扩展引号内的值:Write-Host "Debug: $($DBVersion.value)"。您的Write-Information 也是如此。

单独这样做也解决了我最初的问题,即为什么 Write-Information 没有将任何内容输出到事务日志中,并且我不需要更改 $InformationPreference。

【讨论】:

    猜你喜欢
    • 2012-02-04
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 2023-01-25
    • 2020-02-03
    • 1970-01-01
    相关资源
    最近更新 更多