【问题标题】:What are the PowerShell “special” variables and characters什么是 PowerShell“特殊”变量和字符
【发布时间】:2014-04-29 16:38:16
【问题描述】:

这个问题是为了帮助澄清我对 PowerShell 中的变量的一些困惑。我熟悉创建变量并为其分配值的概念。例如,在 SharePoint 中,您可以这样做:$spsite = http://site

然而,有很多来自 PowerShell 的变量可以以各种方式使用。

例如,如果我在变量$spsite 中设置了一个网站集(就像我在上面所做的那样),我可以在它上面执行一个 foreach 循环并遍历每个网站..

foreach ($web in $spsite)

在另一个例子中,我看到这样的东西

$a = 5
$b = 6
$c = 7
$d = $a,$b,$c

Foreach ($i in $d)
{ $i + 5}

在这两种情况下,我都没有为 $i 或 $web.. 赋值。但它们具有某种意义或价值。我知道 $web 是网站集中的每个网站。但是 PowerShell 是如何知道这一点的呢?就这样吗?

谁能解释这个和/或给我一个解释这个地方的链接?

PowerShell 中还有所有这些特殊变量和特殊字符(快捷方式)的列表。例如,我相信 % 是 foreach-object cmdlet

【问题讨论】:

    标签: variables powershell shorthand


    【解决方案1】:

    $i$web 不是特殊变量。它们只是人们重复使用的流行名称。 foreach-loop 中当前对象的名称由您定义。

    例如:

    #Creating a simple array for the demonstration
    $MyArrayOfAwesomeObjects = 1,2,3
    
    foreach ($ThisVariableIsAwesome in $MyArrayOfAwesomeObjects) {
    
        #Here, $ThisVariableIsAwesome is the current object, and we can call methods on it.
        $ThisVariableIsAwesome.GetType()
    
    }
    
    IsPublic IsSerial Name  BaseType
    -------- -------- ----  --------
    True     True     Int32 System.ValueType
    True     True     Int32 System.ValueType
    True     True     Int32 System.ValueType
    

    至于% -> Foreach-Object,那只是一个别名。您可以使用Get-Alias查看所有别名

    【讨论】:

    • 哦,好的。所以对于我原来帖子中的例子,我可以做类似的事情:foreach ($myawesomeweb in $spsite) 它会做同样的事情吗? ...并且 $i 基本上是在说“对于我数组中的每个变量”?感谢 Get-Alias cmdlet。
    • 是的。这么多人使用$i 而不是$whatever 的原因是因为它代表index
    • 嗯,从技术上讲,它是集合中的一个项目,而不是索引。但是您可以将$i 视为$item 的缩写。 :-)
    • 可能更正确。我在想i 是如何起源的,这也可能是因为 item.我第一次看到它时,它是一个索引/计数器,同时遍历一个数组 ($array[$i]) 呵呵 :)
    猜你喜欢
    • 2011-07-06
    • 2012-06-26
    • 2021-12-09
    • 2021-06-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 2014-07-31
    • 2012-06-08
    相关资源
    最近更新 更多