PowerShell 变量(Variable)

PowerShell  中变量的好处是可以将一些命令或结果存储到变量中,从而更方便对象的操作和维护。PowerShell  中可以不指定类型声明变量,系统会自动识别并定义。PowerShell  中变量的声明是以美元符号("$")开头的,且变量名不区分大小写。



当前版本:




声明和赋值:

$a = 1
$b = 2
$c = $d = 3
${a&a} = 10
$mydir = ls

查看变量:

$a
Get-Variable a
$a,$b,$c,$d,${a&a},$mydir



交换变量值:

$a,$b = $b,$a


重设变量:

$a = 100
Set-Variable -name b -value 99

声明只读变量:(参考 New-Variable

New-Variable pi -Value 3.14 -Force -Option readonly
New-Variable zero -Value 0  -Force -Option constant


Option

Description

"None"

NOoption (default)

"ReadOnly"

Variablecontents may only be modified by means of the -force parameter

"Constant"

Variablecontents can't be modified at all. This option must already bespecified when the variable is created. Once specified thisoption cannot be changed.

"Private"

Thevariable is visible only in a particular context (localvariable).

"AllScope"

Thevariable is automatically copied in a new variable scope.


查看当前已声明的变量:

ls variable:


查看变量更多属性:

ls Variable:pi | Format-List *



删除变量值(不删除变量):

Clear-Variable a

删除变量:(一般不需删除,关闭当前会话自动清除)

del variable:a
del Variable:pi -Force
del Variable:zero -Force	#constant 不可删除
Remove-Variable c

系统变量、自动变量:

$HOME

Get-Help about_Automatic_variables



查看环境变量:

$env:USERNAME
ls env:USER*
ls env:



添加、更改、删除 当前环境变量(当前会话有效):

#添加环境变量(当前会话有效)
$env:TestVar="Test variable"

#添加路径
$env:TestVar = $env:TestVar + ";F:\KK\"

#删除环境变量
del env:TestVar



查看、添加用户或系统环境变量:

[Environment]::GetEnvironmentvariable("Path", "User")
[Environment]::SetEnvironmentVariable("Path", "F:\KK\", "User")

#查看/添加系统环境变量
[Environment]::GetEnvironmentvariable("Path", "Machine")
[Environment]::SetEnvironmentVariable( "Path", $env:Path + ";F:\KK\", [System.EnvironmentVariableTarget]::Machine )




变量作用域(全局、当前、私有、脚本):

$global
全局变量,在所有的作用域中有效,如果你在脚本或者函数中设置了全局变量,即使脚本和函数都运行结束,这个变量也任然有效。

$script
脚本变量,只会在脚本内部有效,包括脚本中的函数,一旦脚本运行结束,这个变量就会被回收。

$private
私有变量,只会在当前作用域有效,不能贯穿到其他作用域。

$local
默认变量,可以省略修饰符,在当前作用域有效,其它作用域只对它有只读权限。


全局变量和函数内部的变量:

function f(){ "var=$var";$var="function inner";$var }

$var = "12345"
$var
f
$var


查看变量类型:

$var = "12345"

$var.GetType()
$var.GetType().Name
$var.GetType().FullName


(10).gettype().name
(9999999999999999).gettype().name
(3.14).gettype().name
(3.14d).gettype().name
("WWW.MOSSFLY.COM").gettype().name
(Get-Date).gettype().name


变量类型转换:

[String]$var = '2014-2-14'

[Boolean]$var = 1

[datetime]'2014-2-14'

变量类型参考:

Variabletype

Description

Example

[array]

Anarray


[bool]

Yes-novalue

[boolean]$flag= $true

[byte]

Unsigned8-bit integer, 0...255

[byte]$value= 12

[char]

Individualunicode character

[char]$a= "t"

[datetime]

Dateand time indications

[datetime]$date= "12.Nov 2004 12:30"

[decimal]

Decimalnumber

[decimal]$a= 12
$a = 12d

[double]

Double-precisionfloating point decimal

$amount= 12.45

[guid]

Globallyunambiguous 32-byte identification number

[guid]$id= [System.Guid]::NewGuid()
$id.toString()

[hashtable]

Hashtable


[int16]

16-bitinteger with characters

[int16]$value= 1000

[int32],[int]

32-bitintegers with characters

[int32]$value= 5000

[int64],[long]

64-bitintegers with characters

[int64]$value= 4GB

[nullable]

Widensanother data type to include the ability to contain null values.

Itcan be used, among others, to implement optional parameters

[Nullable``1[[System.DateTime]]]$test= Get-Date
$test = $null

[psobject]

PowerShellobject


[regex]

Regularexpression

$text= "Hello World"
[regex]::split($text, "lo")

[sbyte]

8-bitintegers with characters

[sbyte]$value= -12

[scriptblock]

PowerShellscriptblock


[single],[float]

Single-precisionfloating point number

[single]$amount= 44.67

[string]

String

[string]$text= "Hello"

[switch]

PowerShellswitch parameter


[timespan]

Timeinterval

[timespan]$t= New-TimeSpan $(Get-Date) "1.Sep 07"

[type]

Type


[uint16]

Unsigned16-bit integer

[uint16]$value= 1000

[uint32]

Unsigned32-bit integer

[uint32]$value= 5000

[uint64]

Unsigned64-bit integer

[uint64]$value= 4GB

[xml]

XMLdocument




参考:powershell 在线教程   Chapter 3. Variables



<think>好的,我现在需要介绍PowerShell变量的使用。首先,我得回想自己学过的知识,确保准确。PowerShell变量以$符号开头,比如$var,对吧?变量名不区分大小写,比如$Var和$var是同一个变量。这点需要提到。 然后,变量的创建和赋值,是不是直接使用等号?比如$var = "Hello"。还有,变量可以存储不同类型的数据,比如字符串、整数、数组、对象等。例如,$num = 10,$arr = 1,2,3。需要举例说明不同类型的数据存储。 接下来,变量作用域。PowerShell有不同的作用域,比如全局、脚本、本地和私有作用域。用户可能不太清楚,需要简单解释一下,比如使用$global:var来定义全局变量。这部分可能有点复杂,得用简单例子说明。 还有变量的特殊字符,比如如果变量名包含特殊字符,可以用花括号括起来,比如${var with space} = "test"。这个情况虽然不常见,但有必要提一下。 预定义变量,比如$HOME、$PSVersionTable这些自动变量,用户可能想知道有哪些常用的,可以列几个例子,并说明它们的用途。 变量的操作,比如拼接字符串,可以用双引号插值,比如"Value is $var"。或者表达式计算,比如$sum = $a + $b。这部分需要举例说明。 另外,变量的一些方法,比如.GetType()可以查看类型,或者使用Clear-Variable来清除变量。可能需要提到一些常用cmdlet,比如Set-Variable,Get-Variable等。 最后,注意事项,比如变量在作用域内的覆盖问题,或者变量名的最佳实践,比如使用有意义的名称,避免特殊字符等。这部分帮助用户避免常见错误。 现在需要组织这些点,结构清晰,分步骤解释。可能先讲基本使用,再讲作用域,然后特殊变量,操作,最后注意事项。要确保例子正确,比如LaTeX格式的数学公式如果有的话,需要用正确符号,但PowerShell变量可能不太涉及数学公式,不过如果有例子中的表达式,比如计算数值,可能需要用行内公式,比如$result = 2 + 3*5$,不过可能不需要,因为用户的问题是关于变量使用的,可能例子都是代码。但根据系统指令,如果有数学表达式的话要处理,但目前可能不需要。只需要注意代码部分用反引号或者其他格式,但用户的问题里没提代码块格式,可能按常规方式处理即可。 需要检查是否有错误,比如变量作用域的具体关键字是否正确,比如global:,script:,local:,private:这些是否正确。可能还需要确认预定义变量的例子是否准确,比如$HOME是否确实存在,或者是否有其他常用变量如$PWD。 可能还需要提到变量的删除,比如Remove-Variable,或者设置变量为只读,比如Set-Variable -Name var -Option ReadOnly。这些高级用法是否要包括?用户可能作为介绍需要基础内容,所以可能简要提一下即可。 总之,结构应该是:简介,创建与赋值,数据类型,作用域,特殊字符处理,预定义变量,操作与方法,注意事项。每个部分用简明例子说明,确保用户能逐步理解。</think>以下是PowerShell变量使用的分步介绍: --- ### 一、变量基础 1. **变量命名与声明** - 变量以 `$` 开头,命名**不区分大小写**(如 `$var` 与 `$Var` 等价)。 - 直接赋值即可创建变量: ```powershell $name = "Alice" # 字符串 $count = 100 # 整数 $array = 1, 2, 3 # 数组 ``` 2. **数据类型** PowerShell自动推断类型,也可显式指定: ```powershell [int]$age = 30 # 显式声明为整数 [double]$price = 9.99 # 显式声明为双精度浮点数 ``` --- ### 二、作用域控制 通过作用域修饰符限定变量可见范围: ```powershell $global:globalVar = "全局可用" # 全局作用域 $script:scriptVar = "脚本内有效" # 脚本作用域 $local:localVar = "当前作用域" # 默认本地作用域 $private:privateVar = "私有" # 仅在当前块内可见 ``` --- ### 三、特殊变量名处理 若变量名含空格或特殊字符,需用 `{}` 包裹: ```powershell ${var with space} = "有效" ${123Special} = "允许数字开头" ``` --- ### 四、预定义变量 PowerShell内置常用变量: - `$HOME`: 用户主目录路径(如 `C:\Users\Alice`) - `$PSVersionTable`: 查看PowerShell版本信息 - `$_`: 表示管道中的当前对象(如 `Get-Process | ForEach-Object { $_.Name }`) --- ### 五、变量操作 1. **字符串插值** 在双引号中直接引用变量: ```powershell $name = "Bob" Write-Output "Hello, $name!" # 输出:Hello, Bob! ``` 2. **表达式计算** 使用 `$()` 包裹复杂表达式: ```powershell $result = "结果是:$(2 + 3 * 5)" # 输出:结果是:17 ``` 3. **类型方法调用** 通过 `.` 调用方法或属性: ```powershell $num = 10 $num.GetType() # 查看变量类型(输出:System.Int32) ``` --- ### 六、变量管理Cmdlet - **查看所有变量**: ```powershell Get-Variable ``` - **删除变量**: ```powershell Remove-Variable -Name "varName" ``` - **设置只读变量**: ```powershell Set-Variable -Name "readOnlyVar" -Value 42 -Option ReadOnly ``` --- ### 七、注意事项 1. **作用域覆盖**:局部变量会覆盖同名的全局变量。 2. **命名规范**:建议使用驼峰命名(如 `$serverName`),避免特殊字符。 3. **类型安全**:显式指定类型可避免意外类型转换。 --- 通过以上步骤,您可以掌握PowerShell变量的核心用法。实际使用时,可通过 `Get-Help about_Variables` 查看官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值