输出需要是文本(不是对象)

时间:2016-12-07 10:51:06

标签: windows powershell server

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

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

1 个答案:

答案 0 :(得分:0)

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