【问题标题】:Output needs to be in text(not object)输出需要在文本中(不是对象)
【发布时间】:2016-12-07 10:51:06
【问题描述】:

我在我的代码中打印这样的输出,但我被告知我的输出需要在文本中(而不是对象)。有人可以向我解释这意味着什么以及我的代码有什么问题吗?谢谢。

Write-Output "ALL INSTALLED WINDOWS FEATURES:" 
Write-Verbose -Message "Searching installed features..." -Verbose
$obj=Get-WindowsFeature | Where-Object {$_.Installed} | Select-Object Name, InstallState | Format-Table -AutoSize
Write-Output $obj

Write-Output "OPERATING SYSTEM INFO:"
Write-Verbose -Message "Searching operating system info..." -Verbose
$opInfo=Get-CimInstance Win32_OperatingSystem | Select-Object Version, Caption, InstallDate, LastBootUpTime, TotalVirtualMemorySize , SystemDirectory | FL
Write-Output $opInfo

【问题讨论】:

  • 您当前正在输出对象(正确的方式)。有人要求您输出文本。你有什么问题?
  • 向告诉你需要文本的人询问更多细节。

标签: windows powershell server


【解决方案1】:

您的代码在技术上没有任何问题,但我个人会将Write-Output "OPERATING SYSTEM INFO:" 更改为Write-Verbose,在输出中包含该标头将使您在代码的其他部分中使用您的函数的结果。然而,返回对象 opInfo 而不是字符串集合是绝对正确的,有人告诉你不要这样做的唯一原因是,如果他们打算与你创建交互的代码写得不正确,或者写在较旧的脚本中像 VBS 这样的语言,或者如果他们只是不知道在 Powershell 开发中对对象的偏好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多