"a,b,c".split(",") 一种 b C > "a,b,c".长度 5 > "a,b,c"-长度 在行:1 字符:9 + "a,-6ren">
gpt4 book ai didi

powershell - 标志和方法背后的逻辑是什么?

转载 作者:行者123 更新时间:2023-12-02 23:38:46 24 4
gpt4 key购买 nike

例如:

> "a,b,c"- 拆分 ","
一种
b
C

> "a,b,c".split(",")
一种
b
C

> "a,b,c".长度
5

> "a,b,c"-长度
在行:1 字符:9
+ "a,b,c"-长度
+ ~~~~~~~
表达式或语句中出现意外的标记“-length”。
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken

因此,并非每种方法都可以表示为标志/参数列表。我什至不确定.split-split是同一件事还是偶然。

我应该什么时候使用标志,什么时候使用方法?如何发现所有可用的标志(对于字符串、数字等)

另一件事是 ls -?返回帮助文本,但 "foo" -?没有。因此,虽然它接受标志,但它并没有真正被视为命令

最佳答案

归结为这一点。

这... "a,b,c"-长度

关于运营商
运算符是可以在命令或表达式中使用的语言元素。
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_operators?view=powershell-5.1
因为有几种操作符类型,所以上面不是一个单一的源文档引用。

与此...“a,b,c”.length

关于方法
描述如何使用方法对 PowerShell 中的对象执行操作。
方法允许您检查、比较和格式化 PowerShell 对象的许多属性,执行操作。
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_methods?view=powershell-5.1

从你的例子:

String.Split 方法
返回一个字符串数组,其中包含此实例中由指定字符串或 Unicode 字符数组的元素分隔的子字符串
https://msdn.microsoft.com/en-us/library/system.string.split(v=vs.110).aspx

关于拆分
Split 运算符将一个或多个字符串拆分为子字符串。
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_split?view=powershell-5.1

String.Length 属性
Length 属性返回此实例中 Char 对象的数量,而不是 Unicode 字符的数量。

您会注意到,如果您在 PowerShell_ISE.exe 或 VSCode 中打开它,您会立即看到,即使在您运行之前,项目 4 也会立即显示为语法错误。这由红色波浪线表示。该标记意味着它永远不会起作用,因此没有真正的理由尝试它。

仅仅因为您可以键入它,并不能使它正确。如果您在任何内容的空格后键入“-”,您将获得预期内容的列表。好吧,如果您使用的是 PowerShell_ISE 或 Visual Studio Code。如果您在 PowerShell 控制台主机中,则必须按 tab 键来浏览列表或使用 CRTL + 空格键查看完整列表,然后按 Tab 或箭头指向您要使用的内容。

('a,b,c').length # this is an array, and this is returning the count of the elements in the array
5
('a,b,c','d,e,f').length # note the element count difference
2

('a,b,c').Length # property use of a .Net class
5

('a,b,c') -length # attempted unknown / invalid switch (PowerShell operator)

要知道你能对一个对象做什么和不能做什么或如何做,你必须知道它支持什么。这就是 Get-Member 的用途。

所以数组允许这个..
('a,b,c') | Get-Member 

还有这个..
('abc')   | Get-Member

Most common listed

Name MemberType Definition
---- ---------- ----------
...
Split Method string[] Split(Params char[] separator), string[] Split(char[] separator, int count), string[] Sp...
...
Substring Method string Substring(int startIndex), string Substring(int startIndex, int length)
...
ToLower Method string ToLower(), string ToLower(cultureinfo culture)
...
ToString Method string ToString(), string ToString(System.IFormatProvider provider), string IConvertible.ToString...
...
ToUpper Method string ToUpper(), string ToUpper(cultureinfo culture)
...
Trim Method string Trim(Params char[] trimChars), string Trim()
TrimEnd Method string TrimEnd(Params char[] trimChars)
TrimStart Method string TrimStart(Params char[] trimChars)
Chars ParameterizedProperty char Chars(int index) {get;}
Length Property int Length {get;}

至于这个……
我应该什么时候使用标志,什么时候使用方法?
如何发现所有可用的标志(对于字符串、数字等)

您必须阅读您尝试使用的 cmdlet 的帮助文件,或者至少阅读示例。
    Get-Help -Name Get-ItemProperty -Full

Get-Help -Name Get-ItemProperty -Examples

然后有关您尝试使用的 cmdlet/函数的信息
    (Get-Command -Name Get-ItemProperty).Parameters 
switches (flags) which will expect a value to the right of it or not, see the property values line below

然后你可以在什么上使用 cmdlet/function。
    Get-ItemProperty -Path D:\Temp | Format-Table -AutoSize -Wrap
Get-ItemProperty -Path D:\Temp | Format-List
Get-ItemProperty -Path D:\Temp | Format-List -Force
Get-ItemProperty -Path D:\Temp | Select-Object -Property * # property values
(Get-ItemProperty -Path D:\Temp) | Get-Member

至于这个……
另一件事是 ls -?返回帮助文本,但 "foo"-?没有。
因此,虽然它接受标志,但它并没有真正被视为命令

Foo 不是 PowerShell 中任何内容的有效名称,除非您创建了 foo 函数或模块。所以,它应该热返回任何东西。
同样,仅仅因为您可以键入它并不能使其正确。

在大多数情况下,如果您正在执行上述操作并且您没有获得自动智能感知,那么您所做的可能是错误的。

查看系统上可供使用的所有 cmdlet、功能等。你来做这件事。
Get-Command

关于powershell - 标志和方法背后的逻辑是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48048588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com