【问题标题】:PowerShell Members: explanation for Methods and Properties?PowerShell 成员:方法和属性的解释?
【发布时间】:2024-04-24 13:55:02
【问题描述】:

我是 PowerShell 的新手,很久以前就有 BASH 背景。 PowerShell 的内置文档和 Web 帮助非常好,但我一直遇到的一个问题是理解方法和属性(这些称为成员/类吗?)。我知道我可以通过这样做来查看我可以使用哪些方法和属性,例如:

ls | get-member

.Exists.Trim.SubString.Split 等实际上是如何工作的?

【问题讨论】:

    标签: powershell methods properties


    【解决方案1】:

    当您执行Get-Member 时,您将看到 TypeName,类似于:

    TypeName: System.IO.DirectoryInfo
    

    您可以搜索该类型并查看其成员。

    这些是 .NET 框架对象及其成员和属性,因此您可以使用 msdn 上的大量文档。

    例如,这是 DirectoryInfo 的文档:http://msdn.microsoft.com/en-us/library/system.io.directoryinfo.aspx

    【讨论】:

    • 同意,获得会员+您最喜欢的搜索引擎是最好的解决方案。由于我们处理的是 .NET 对象,因此有大量的 MSDN/TechNet 官方文档以及大量使用 PowerShell 或 C# 进行类似工作的人的示例。
    • 谢谢你,但它并不一定告诉我应该如何在 PowerShell 中使用它。语法是什么?每次使用方法时语法是否相同,是否有选项,即:.Method(Get|Set)?如何使用 Get 或 Set?这些​​是唯一的选项吗?
    • 任何带有 get;set; 的东西将是一个属性,而不是一个方法。为此,您将只使用点符号:get-childitem | foreach-object { $_.length } ... 对于实际方法,语法看起来更像是 C# 之类的编程语言,而不是 PowerShell 的 cmdlet: (get-date).toString("MM-dd-yyyy")
    • 我猜是我很困惑的部分,你怎么知道("MM-dd-yyyy") 是要使用的参数?如果我理解正确,在方法中使用. 就像将字符串传递给该特定方法,而() 之间的所有内容都是选项/参数所在的位置?
    • 您可能想阅读这篇文章,它解释了点运算符 msdn.microsoft.com/en-us/library/6zhxzbds.aspx 和这篇文章解释了方法 msdn.microsoft.com/en-us/library/ms173114.aspx 这些都是 C# 主题,但它将帮助您了解它们在 PowerShell 中的使用.
    【解决方案2】:

    我刚刚在脚本存储库中发布了一个脚本,可以帮助您解决这个问题。 http://gallery.technet.microsoft.com/scriptcenter/Finding-reference-b12324bc

    它为您省去了精力,所以现在您可以执行以下操作:

    Get-ChildItem C:\Windows | Get-Member | .\Find-TypeReference.ps1
    

    这会导致脚本以 FileInfo 和 DirectoryInfo 类型作为查询为您打开 MSDN 搜索页面。

    【讨论】:

    • 刚刚下载了你的脚本,谢谢。如上所述,MSDN 站点没有给我提供如何在 PowerShell 中使用它的示例(但是它确实提供了其他语言的示例)。其他 PowerShell 用户如何学习这些方法/属性?
    • 您确实必须对学习 .Net 框架进行研究,以了解如何利用这些不同的方法/属性。至于学习 PowerShell 中命令的语法,您应该看看几个地方。 * get-help new-object -full * get-help about_Objects * get-help about_Methods * get-help about_Properties
    • 此外,对于方法,如果您有一个字符串,例如 { $a = "Testing" } 并将其通过管道传递给 Get-Member,您将看到方法和属性的定义。处理方法时,您可以添加不带括号的方法名称,PowerShell 将为您提供如何调用方法的实际重载定义。所以做这样的事情来查看 substring 方法的不同定义: { $a.substring }
    • 哇,好吧......这更接近了。有了这些信息和一些在网上的挖掘,我相信我能弄清楚。我只是希望有一个中心资源。