[玩转系统] PowerShell 变量和数组
作者:精品下载站 日期:2024-12-14 05:58:32 浏览:12 分类:玩电脑
PowerShell 变量和数组
在上一篇名为《PowerShell 脚本编写初学者教程》的文章中,我们探讨了如何使用 PowerShell 控制台执行脚本,并了解了什么是 cmdlet、如何获取其属性以及如何使用管道将数据从一个 cmdlet 传递到另一个 cmdlet。
在本文中,我们将继续讨论变量和数组,包括它们是什么以及如何创建、删除和更改它们。
PowerShell 变量
- 变量类型
- 变量范围
PowerShell 变量示例
- 列出变量
PowerShell 数组
- 数组列表
PowerShell 数组示例
- 排序数组
PowerShell 变量
变量是存储值的内存单元。 PowerShell 中的变量以“$”(美元符号)开头,其名称可以包含任何字母、数字和下划线。为了给变量赋值,我们使用“=”运算符。要显示变量的值,只需输入变量即可。以下命令为变量分配一个值,然后验证它:
$var1 = 777
$var1
您可以对数字执行算术运算:
$var1 = 777
$var2 = 333
$var3 = $var1 + $var2
$var3
您还可以使用“+”运算符组合字符串:
$var1 = "Complete"
$var2 = "Visibility"
$var3 = $var1 + $var2
$var3
如果将数字添加到字符串中,该数字将自动变成字符串:
$var1 = "Netwrix"
$var2 = 2018
$var3 = $var1 + $var2
$var3
变量类型
PowerShell 变量类型是根据您分配给它的值自动设置的,但您也可以手动分配类型:
[string]$var1 = "Netwrix"
要找出变量的类型,我们使用“GetType()”参数:
$var1 = "Netwrix"
$var1.GetType().FullName
正如我们所看到的,我们的 $var1 变量具有“System.String”类型。
以下是所有 PowerShell 变量类型的描述:
System.String
Text string $var1 = "Netwrix" [char]
System.Char
Symbol[char]$var1 = 0x265b
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"
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"}
$var3.Add("4", "four")
$var3.5 = "five"
$var3.Remove("2")
您可能已经明白,您不仅可以向变量写入一些确定的值,并且注意到表中的 System.Object[] 类。您可以将任何 cmdlet 的输出写入此变量。
变量范围
PowerShell 中的变量范围可以是本地的,也可以是全局的。默认情况下,变量具有局部作用域。变量受其当前作用域限制;例如,局部变量可以在当前函数或脚本中可用,而全局变量在整个当前 PowerShell 会话中都处于活动状态。要表示全局变量,请使用格式 $Global:variable=value,如以下命令所示:
$Global:var4 = 12
PowerShell 变量示例
列出变量
要列出当前所有可用变量,请运行 ls variable:* 命令。以下是输出示例:
设置变量
您只需为其赋值即可创建变量。例如,命令 $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
要写入 HTML 文件,请使用 ConvertTo-Html 命令:
$var6 = Get-Process
$var6 | ConvertTo-Html -Property Name, Path > C:scriptsprocesses.html
要读取我们导出的文件,我们使用 Get-Content cmdlet:
Get-Content C:scriptsprocesses.csv
清除变量
要清除变量的内容,请使用 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()
当然,您不能总是提前知道执行特定命令后将收到多少个对象,因此您需要具有始终将结果视为数组的代码。
您可以通过多种方式做到这一点。例如,您可以使用“,”运算符。如果使用逗号作为二元运算符,则创建一个普通数组;如果用作一元运算符,则数组只有一个元素。例如,以下是我们如何获取由一个元素组成的数组:
$array1 = ,1
$array1.GetType()
或者,您可以显式指定变量的数据类型:
[object[]]$array1 = 1
$array1.GetType()
最后,您还可以使用子表达式运算符“@”创建数组,即使根本没有指定对象,它也会形成一个数组。将变量初始化为数组,然后向其中添加对象而不必担心它们的数量,这是非常方便的。
$array3 = @()
$array3.GetType()
请注意,数组的每个元素都有自己的数据类型,并且类型 object[] 允许您向数组添加任何值。如有必要,您可以将数组的成员限制为特定的数据类型 - 然后您将创建一个“类型化数组”。例如,您可以指定数组元素必须是整数值:
[int32[]]$array1 = 1
$array1.GetType()
因此我们将系统进程定义为数组成员:
[System.Diagnostics.Process[]]$array1 = Get-Process
$array1.GetType()
数组列表
如果您经常修改或搜索数组,则可以使用 ArrayList 类,该类旨在让您轻松添加、删除和搜索其中的项目:
$array3 = New-Object System.Collections.ArrayList
数组索引
数组中的索引是一个值,通常是用于标识和引用数组元素的整数。数组索引从零或一开始,具体取决于编程语言。 Windows PowerShell 数组是从零开始的,因此要引用数组的第一个元素 $var3 (“元素零”),您可以编写 $var3 [0]。
$var3 = "first", "second", "third"
多维数组
多维数组是可用于在表中存储信息而无需将其写入真实数据库的变量。它看起来像一个哈希表,但它可以存储不同类型的信息,例如字符串和整数。事实上,您可以将多维数组想象为具有列和行的表格,其中每个单元格在 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 数组示例
排序数组
如果数组仅包含一种数据类型,您可以使用 Sort 方法对值进行排序:
$array3 | Sort
要对具有多种数据类型的数组进行排序,您需要使用 Sort-Object cmdlet。
添加到数组
首先,我们创建一个数组:
$array5 = "one", "two", "three", "four", "five"
$array5.gettype()
为了轻松修改我们的数组,我们需要将其添加到 arraylist 集合中:
[System.Collections.ArrayList]$ArrayList1 = $array5
$ArrayList1.GetType()
如您所见,BaseType 已更改,我们现在可以轻松修改数组:
$ArrayList1.Add("six")
$ArrayList1.Remove("three")
$ArrayList1
数组长度
要返回数组中的元素数量,请使用 .length 参数:
$array6 = 1,2,3,4,5,6
echo $array6.Length
从数组中删除项目
要删除项目,请使用.Remove命令。同样,最好使用数组列表:
[System.Collections.ArrayList]$ArrayList1 = $array5
$ArrayList1.GetType()
$ArrayList1.Remove("three")
$ArrayList1
数组包含
如果您想查看数组中的任何元素是否包含特定值,请使用 Contains 方法:
$array7 = 1,2,5,8,3,4,5
$array7.Contains(2)
$array7.Contains(12)
清除阵列
尽管 PowerShell 中的大多数数组操作都相对容易完成,但删除数组并没有简单的方法。删除整个数组的最简单方法是将变量 $null 分配给它:
$array7 = $null
$array7
要检查数组是否为空,请运行以下脚本:
$array7 -eq $null
在 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。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag