当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 变量和数组

作者:精品下载站 日期:2024-12-14 05:58:32 浏览:12 分类:玩电脑

PowerShell 变量和数组


在上一篇名为《PowerShell 脚本编写初学者教程》的文章中,我们探讨了如何使用 PowerShell 控制台执行脚本,并了解了什么是 cmdlet、如何获取其属性以及如何使用管道将数据从一个 cmdlet 传递到另一个 cmdlet。

在本文中,我们将继续讨论变量和数组,包括它们是什么以及如何创建、删除和更改它们。

  • PowerShell 变量

    • 变量类型
  • 变量范围
  • PowerShell 变量示例

    • 列出变量
  • 设置变量
  • 获取变量
  • 打印变量
  • 清除变量
  • 删除变量
  • PowerShell 数组

    • 数组列表
  • 数组索引
  • 多维数组
  • PowerShell 数组示例

    • 排序数组
  • 添加到数组
  • 数组长度
  • 从数组中删除项目
  • 数组包含
  • 清除阵列
  • 打印数组
  • 循环遍历数组
  • PowerShell 变量

    变量是存储值的内存单元。 PowerShell 中的变量以“$”(美元符号)开头,其名称可以包含任何字母、数字和下划线。为了给变量赋值,我们使用“=”运算符。要显示变量的值,只需输入变量即可。以下命令为变量分配一个值,然后验证它:

    $var1 = 777
    $var1

    [玩转系统] PowerShell 变量和数组

    您可以对数字执行算术运算:

    $var1 = 777
    $var2 = 333
    $var3 = $var1 + $var2
    $var3

    [玩转系统] PowerShell 变量和数组

    您还可以使用“+”运算符组合字符串:

    $var1 = "Complete"
    $var2 = "Visibility"
    $var3 = $var1 + $var2
    $var3

    [玩转系统] PowerShell 变量和数组

    如果将数字添加到字符串中,该数字将自动变成字符串:

    $var1 = "Netwrix"
    $var2 = 2018
    $var3 = $var1 + $var2
    $var3

    [玩转系统] PowerShell 变量和数组

    变量类型

    PowerShell 变量类型是根据您分配给它的值自动设置的,但您也可以手动分配类型:

    [string]$var1 = "Netwrix"

    [玩转系统] PowerShell 变量和数组

    要找出变量的类型,我们使用“GetType()”参数:

    $var1 = "Netwrix"
    $var1.GetType().FullName

    [玩转系统] PowerShell 变量和数组

    正如我们所看到的,我们的 $var1 变量具有“System.String”类型。

    以下是所有 PowerShell 变量类型的描述:

    Variable Type Description Example [string]
    System.String
    Text string $var1 = "Netwrix" [char]
    System.Char
    Symbol[char]$var1 = 0x265b
    [玩转系统] PowerShell 变量和数组 [bool]
    System.BooleanBoolean (value can be $true or $false)$var1 = $true [int]
    System.Int32
    32-bit integer$var2 = 235235345 [long]
    System.Int64
    64-bit integer$var2 = 2352353457 [decimal]
    System.Decimal
    128-bit decimal number with the letter “d” at the end$var2 = 23523.53456d [double]
    System.Double
    8-byte decimal floating point number[double]$var2 = 23523.53456 [single]
    System.Single
    32-bit floating point number[single]$var2 = 23523.53 [DateTime]
    System.DateTime
    Date and time $var3 = get-date [array]
    System.Object[]
    Array (discussed in detail later in this article)$var3 = "first", "second", "third"
    [玩转系统] PowerShell 变量和数组 [hashtable]
    System.Collections.Hashtable
    Hash table
    The difference between hash tables and arrays is that indexes are used in arrays, and named keys are used in hash tables. Hash tables are built using the following format: @ {key = "value"}
    To add an item to a hash table, you can either assign it a key that does not already exist or use the Add () method. If the assignment is made to an existing key, the value of the key changes to the assigned one. To remove an item from a hash table, use the Remove () method.
    $var3 = @{1="one"; 2="two"; 3="three"}
    [玩转系统] PowerShell 变量和数组

    $var3.Add("4", "four")
    $var3.5 = "five"
    $var3.Remove("2")

    您可能已经明白,您不仅可以向变量写入一些确定的值,并且注意到表中的 System.Object[] 类。您可以将任何 cmdlet 的输出写入此变量。

    变量范围

    PowerShell 中的变量范围可以是本地的,也可以是全局的。默认情况下,变量具有局部作用域。变量受其当前作用域限制;例如,局部变量可以在当前函数或脚本中可用,而全局变量在整个当前 PowerShell 会话中都处于活动状态。要表示全局变量,请使用格式 $Global:variable=value,如以下命令所示:

    $Global:var4 = 12

    PowerShell 变量示例

    列出变量

    要列出当前所有可用变量,请运行 ls variable:* 命令。以下是输出示例:

    [玩转系统] PowerShell 变量和数组

    设置变量

    您只需为其赋值即可创建变量。例如,命令 $var4=“variableexample” 创建一个名为 $var4 的变量并为其分配一个字符串值。双引号 (“”) 表示正在将字符串值分配给变量。

    获取变量

    这与列表变量命令非常相似,只是使用另一个 cmdlet:

    Get-Variable | Out-String

    打印变量

    您可以将变量输出为 .txt、.csv 或 HTML 文件。

    要写入 .txt 文件,请使用 Out-File 命令:

    $var5 = "Hello World!"
    $var5 | Out-File C:scriptsHello_World.txt

    要将数据导出到 .csv 文件,请使用 Export-Csv 命令:

    $var6 = Get-Process
    $var6 | SELECT Name, Path | Export-Csv -Path C:scriptsprocesses.csv

    [玩转系统] PowerShell 变量和数组

    要写入 HTML 文件,请使用 ConvertTo-Html 命令:

    $var6 = Get-Process
    $var6 | ConvertTo-Html -Property Name, Path > C:scriptsprocesses.html

    要读取我们导出的文件,我们使用 Get-Content cmdlet:

    Get-Content C:scriptsprocesses.csv

    [玩转系统] PowerShell 变量和数组

    清除变量

    要清除变量的内容,请使用 Clear-Variable cmdlet:

    Clear-Variable -name var6 #without $

    删除变量

    要完全删除变量,请使用 Remove-Variable cmdlet:

    Remove-Variable -name var6 #without $

    PowerShell 数组

    数组是变量的一种类型。它是按一定顺序排列的一组组件(数组元素)。数组的元素按顺序编号,您可以使用元素的索引号来访问元素。

    创建数组时,请注意默认的 PowerShell 行为。如果您创建包含多个元素的数组,PowerShell 将按照您的意图创建一个数组。例如,将几个数字放入一个数组中,然后检查变量的数据类型:

    $array1 = 1, 2, 3
    $array1.GetType()

    如您所见,在本例中,PowerShell 创建了一个数组 (System.Array)。

    但是,如果您只在变量中放入一个值,则 PowerShell 将不会创建数组:

    $array1 = 1
    $array1.GetType()

    [玩转系统] PowerShell 变量和数组

    当然,您不能总是提前知道执行特定命令后将收到多少个对象,因此您需要具有始终将结果视为数组的代码。

    您可以通过多种方式做到这一点。例如,您可以使用“,”运算符。如果使用逗号作为二元运算符,则创建一个普通数组;如果用作一元运算符,则数组只有一个元素。例如,以下是我们如何获取由一个元素组成的数组:

    $array1 = ,1
    $array1.GetType()

    [玩转系统] PowerShell 变量和数组

    或者,您可以显式指定变量的数据类型:

    [object[]]$array1 = 1
    $array1.GetType()

    [玩转系统] PowerShell 变量和数组

    最后,您还可以使用子表达式运算符“@”创建数组,即使根本没有指定对象,它也会形成一个数组。将变量初始化为数组,然后向其中添加对象而不必担心它们的数量,这是非常方便的。

    $array3 = @()
    $array3.GetType()

    [玩转系统] PowerShell 变量和数组

    请注意,数组的每个元素都有自己的数据类型,并且类型 object[] 允许您向数组添加任何值。如有必要,您可以将数组的成员限制为特定的数据类型 - 然后您将创建一个“类型化数组”。例如,您可以指定数组元素必须是整数值:

    [int32[]]$array1 = 1
    $array1.GetType()

    因此我们将系统进程定义为数组成员:

    [System.Diagnostics.Process[]]$array1 = Get-Process
    $array1.GetType()

    [玩转系统] PowerShell 变量和数组

    数组列表

    如果您经常修改或搜索数组,则可以使用 ArrayList 类,该类旨在让您轻松添加、删除和搜索其中的项目:

    $array3 = New-Object System.Collections.ArrayList

    数组索引

    数组中的索引是一个值,通常是用于标识和引用数组元素的整数。数组索引从零或一开始,具体取决于编程语言。 Windows PowerShell 数组是从零开始的,因此要引用数组的第一个元素 $var3 (“元素零”),您可以编写 $var3 [0]。

    $var3 = "first", "second", "third"

    [玩转系统] PowerShell 变量和数组

    多维数组

    多维数组是可用于在表中存储信息而无需将其写入真实数据库的变量。它看起来像一个哈希表,但它可以存储不同类型的信息,例如字符串和整数。事实上,您可以将多维数组想象为具有列和行的表格,其中每个单元格在 PowerShell 环境中都有自己的索引。

    $mdarray1 = @()
    $mdarray1_counter ++
    $mdarray1 += ,@($mdarray1_counter, 'Earth',12742)
    $mdarray1_counter ++
    $mdarray1 += ,@($mdarray1_counter, 'Mars',6779)
    $mdarray1_counterr ++
    $mdarray1 += ,@($mdarray1_counter, 'Venus',12104)
    $mdarray1_counter ++
    $mdarray1 += ,@($mdarray1_counter, 'Saturn',116464)
    foreach($array10 in $mdarray1)
        {
        Write-host ($array10)
        }

    [玩转系统] PowerShell 变量和数组

    PowerShell 数组示例

    排序数组

    如果数组仅包含一种数据类型,您可以使用 Sort 方法对值进行排序:

    $array3 | Sort

    要对具有多种数据类型的数组进行排序,您需要使用 Sort-Object cmdlet。

    添加到数组

    首先,我们创建一个数组:

    $array5 = "one", "two", "three", "four", "five"
    $array5.gettype()

    [玩转系统] PowerShell 变量和数组

    为了轻松修改我们的数组,我们需要将其添加到 arraylist 集合中:

    [System.Collections.ArrayList]$ArrayList1 = $array5
    $ArrayList1.GetType()

    [玩转系统] PowerShell 变量和数组

    如您所见,BaseType 已更改,我们现在可以轻松修改数组:

    $ArrayList1.Add("six")
    $ArrayList1.Remove("three")
    $ArrayList1

    [玩转系统] PowerShell 变量和数组

    数组长度

    要返回数组中的元素数量,请使用 .length 参数:

    $array6 = 1,2,3,4,5,6
    echo $array6.Length

    [玩转系统] PowerShell 变量和数组

    从数组中删除项目

    要删除项目,请使用.Remove命令。同样,最好使用数组列表:

    [System.Collections.ArrayList]$ArrayList1 = $array5
    $ArrayList1.GetType()
    $ArrayList1.Remove("three")
    $ArrayList1

    [玩转系统] PowerShell 变量和数组

    数组包含

    如果您想查看数组中的任何元素是否包含特定值,请使用 Contains 方法:

    $array7 = 1,2,5,8,3,4,5
    $array7.Contains(2)
    $array7.Contains(12)

    [玩转系统] PowerShell 变量和数组

    清除阵列

    尽管 PowerShell 中的大多数数组操作都相对容易完成,但删除数组并没有简单的方法。删除整个数组的最简单方法是将变量 $null 分配给它:

    $array7 = $null
    $array7

    要检查数组是否为空,请运行以下脚本:

    $array7 -eq $null

    [玩转系统] PowerShell 变量和数组

    在 PowerShell 中,如果变量为 null,则无法对其应用任何方法。

    打印数组

    要打印整个数组,我们可以使用与打印变量相同的方法。

    要写入 .txt 文件,请使用 Out-File 命令:

    $var5 | Out-File C:scriptsarray.txt

    要导出到 .csv 文件,请使用 Export-Csv 命令:

    $var6 | Export-Csv -Path C:scriptsarray.csv

    要写入 HTML 文件,请使用 ConvertTo-Html 命令:

    $var6 | ConvertTo-Html > C:scriptsprocesses.html

    循环遍历数组

    为了依次处理数组中的每个元素,我们需要使用 foreach 运算符创建一个循环。例如,如果我们声明一个字符串数组并想要计算数组中每个单词的长度,我们应该运行以下脚本:

    $array8 = @("Earth","Mercury","Venus","Jupiter","Saturn","Mars", "Neptune", "Pluto")
    
    foreach ($array in $array8) {
     "$array = " + $array.length
    }

    [玩转系统] PowerShell 变量和数组

    在本文中,我们了解了变量及其类型。然后我们详细探索了一种变量类型——数组——并学习了如何使用它。有了这些信息,您就可以更深入地了解 PowerShell。

    您需要 登录账户 后才能发表评论

    取消回复欢迎 发表评论:

    关灯