【问题标题】:Powershell object attribute not showingPowershell 对象属性未显示
【发布时间】:2015-01-20 09:58:08
【问题描述】:

知道为什么 $result.PathName 不起作用吗?

$results = Get-WMIObject -query "select * from Win32_Service where Name LIKE '%sql%'" | Select Name, PathName | Format-List
ForEach ($result in $results) {
    Write-Output "Test = " + $result.PathName
}        
Write-Output "done"

预期输出:

Test = C:\blah\blah.sqlserver.exe
Test = C:\blah\blah.sqlserver.exe

实际输出

Test =
+
Test = 
+

【问题讨论】:

    标签: loops powershell foreach


    【解决方案1】:

    Format-* cmdlet 生成格式化指令作为输出。除了向用户显示结果或Out-* cmdlet 之外,此说明对任何事情都没有用。从您的代码中删除 Format-List。并将表达式放在 Write-Output 之后的括号中:Write-Output ("Test = " + $result.PathName),将其解释为单个表达式,而不是 Write-Output 的三个不同参数。或者您可以完全删除Write-Output,因为它默认暗示。

    【讨论】:

    • 感谢这是获取对象但产生了这个:
      Test = @{Name=SQLWriter; PathName="C:\blah\sqlwriter.exe"}.PathName
    • 这是你写的:"Test = $result.PathName"?您应该改为:"Test = $($result.PathName)".
    • 明白了,谢谢。有什么好的网站可以快速上PS吗?这个网站通常适合学习吗? powershell.com/cs/blogs/tips/archive/2009/06/08/… -- 该页面让我可以完成脚本的下一部分
    • @Dird 我主要通过内置文档、MSDN、ILSpy 学习 PowerShell,以了解一些内部工作和实践,所以我不能推荐任何好的学习网站。
    • @Dird 大多数人只是“在工作中”拿起它,但我不能推荐这本书足够manning.com/payette2。如果您设法找到它,那将是一本非常好的深度阅读
    猜你喜欢
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    相关资源
    最近更新 更多