在指令执行过程中,会有一些数据产生,这些数据被用于以后的语句,需要一个存储单元暂时的存放这些数据,这个时候定义一个变量来存储数据。例如$string = “Hello Powershell!”

Powershell中无需declare声明,定义变量前缀有”$”符号

常见变量类型

数值型(int)

字符型(char)

布尔型(bool)

定义变量

$a = 100 #变量$a值赋予100

Set-Variable -Name a -Value 100 为变量$a赋值100 或者

New-Varibale –Name a –Value 100 创建变量$a并赋值100 (有关New-Variable还有更多的参数,例如设置变量写保护,为变量写描述信息等等)

打印变量值

$a或者write-host $a

同时为多个变量赋相同值

$a = $b = $c = 1

交换变量内容

例如,有两个变量$a=1和$b=2,现在叫唤两个变量的值

$a = 1

$b = 2

$temp = $a #定义一个变量$temp用于数据交换

$a = $b

$b = $temp

$a

$b

另外还有一种更加简便的方式:

$a,$b = $b,$a

在一行中如何为多个变量赋予不同的值,例如:

$a,$b = 1,2

查看在使用的变量

在指令中,我们会使用到相应的变量来暂时的存放数据,用过的变量Powershell会存有历史记录,如何查看我们使用过的变量以及它们的值?

查找变量

在原来的指令中,如果定义过相应的变量,此时想查看变量值为多少,这时就需要把变量找出来,并显示出值来。例如:在前面定义了两个变量$value1,$value2,想查看下两个变量值,此时使用dir variable:value* ,配合使用通配符找出两个变量,并显示变量值。

校验变量是否存在

在使用变量时,有时会首先确认此变量是否在以前有使用过,避免变量数值被覆盖。可以使用Test-Path来进行校验,和文件的校验很类似,变量也有路径。返回值为布尔值,如果存在则返回True,如果不存在则返回False。

在下面的例子中,$value1变量存在,$value变量不存在。

删除变量

当退出Powershell时,定义的变量会自动删除,一般情况下没必要做删除变量的操作,如果需要立即删除变量。可以使用delete variable:\test命令删除,其中test为变量名。

环境变量

Powershell依赖于Windows自身的环境变量,对于Powershell来说环境变量是非常重要的信息来源,因为它包括许多操作系统细节,而且环境变量是永久保留的,因此不担心Powershell在关闭时,变量丢失问题,从而可以被其他应用程序读取。

如何定义新的环境变量

$env:test = 12 #定义了一个名为test的环境变量,并赋值12

如果想删除定义的这个环境变量使用del env:\test即可

变量作用域

$global The variable is valid in all scopes and is preserved when a script or a

function ends its work.

$script The variable is valid only within a script, but everywhere within it.

Once the script is executed, the variable is removed.

$private The variable is valid only in the current scope, either a script or a

function. It cannot be passed to other scopes.

$local The variable is valid only in the current scope. All scopes called with

it can read, but not change, the contents of the variable.

Modifications are also stored in new local variables of the current

scope.

$local: is the default if you don't specify a particular scope

例:

$global:a = 1000 #定义全局变量$a,并赋值1000

变量类型转换

在一些情况下,需要转换变量的类型,例如datetime转字符串,字符串转datetime等情况,首先还是看一下如何查看变量的类型:

在这个例子中,我们可以看到使用gettype()方法可以查看$a变量为字符串类型。

将$a强制转换成datetime类型

校验变量值是否满足条件

在定义的变量中,有些变量必须要满足一定的条件,例如不能为空值,不能少于3个字符等等,在Powershell中如果对定义的变量进行值的校验呢?下面让我们看一个例子:

$a = "hello" #定义变量$a

$aa = Get-Variable a #在当前console获取变量$a的属性

$aa.Attributes.Add($(New-Object system.Management.Automation.ValidateLengthAttribute -ArgumentList 2,8)) #为变量$a添加校验属性,字符长度不能小于2大于8

$a = "testtesttest" #测试

除了以上长度校验外,还有其他校验方法:

邮件校验方式:

$email = "tobias.weltner@powershell.com"

$v = Get-Variable email

$pattern = "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b"

$v.Attributes.Add($(New-Object `

System.Management.Automation.ValidatePatternAttribute `

-argumentList $pattern))

特殊变量(检测最后执行的命令是否成功)

$LastExitCode 返回数字(退出码或错误级别)

$? 返回布尔值

5.Powershell变量的更多相关文章

  1. Powershell变量的幕后管理

    Powershell变量的幕后管理 513 12月, 2011  在 Powershell  tagged 变量 / 类型 by Mooser Lee本文索引[隐藏]1修改变量的选项设置2激活变量的写 ...

  2. Powershell变量的类型和强类型

    Powershell变量的类型和强类型12 12月, 2011  在 Powershell  tagged Powershell教程 / 变量 / 存储 / 数据 / 类型 by Mooser Lee ...

  3. Powershell变量的类型

    Powershell 默认支持的.NET类型如下:   [order], [pscustomobject], [array], [bool], [byte], [char], [datetime], ...

  4. Powershell对象选择,排序和变量存储

    PowerShell基础教程(17)——对象的选择.排序和变量存储 可以使用 Select-Object cmdlet 来创建新的.自定义的 Windows PowerShell 对象,后者包含的属性 ...

  5. [译]SSAS下玩转PowerShell(二)

    上一篇中简单的介绍了SSAS下的PowerShell,这一篇会演示更多的操作,比如根据当前时间创建备份,使用变量去指定处理哪一个分区,以及用XMLA脚本去创建分区,和在PowerShell中调用Pow ...

  6. powershell命令大全

    Name Category Synopsis ---- -------- -------- ac Alias Add-Content asnp Alias Add-PSSnapin clc Alias ...

  7. Powershell --在线学习

    介绍和安装 自定义控制台 快速编辑模式和标准模式 快捷键 管道和重定向 Powershell交互式 数学运算 执行外部命令 命令集 别名 通过函数扩展别名 执行文件和脚本 Powershell变量 定 ...

  8. PowerShell 在线教程 4

    PowerShell 在线教程 4   认识Powershell 介绍和安装 自定义控制台 快速编辑模式和标准模式 快捷键 管道和重定向 Powershell交互式 数学运算 执行外部命令 命令集 别 ...

  9. windows powershell基础

    windows powershell基础 目录: 1.管道和重定向 2.命令执行 3.变量 4.数组和哈希表 #@()创建数组,使用","把每个值分隔开,@{}创建哈希表,用&qu ...

随机推荐

  1. C#做上位机软件——绘图并传输给下位机

    拿到任务之后首先分成了几个部分: 1.绘图.学习了GDI+ 2.图片保存. 3.将图片转换成byte[].由于使用Socket通信,只能传输byte[]数据,所以这一步是向下位机传输的关键. 相应地, ...

  2. HTTP协议请求响应过程和HTTPS工作原理

    HTTP协议 HTTP协议主要应用是在服务器和客户端之间,客户端接受超文本. 服务器按照一定规则,发送到客户端(一般是浏览器)的传送通信协议.与之类似的还有文件传送协议(file transfer p ...

  3. 本地项目上传到GitHub

    之前在github上搭建了前端node方面的东西,现在本地添加了maven结构的java代码,尝试了本地上到github项目分支的指令,现记录下 1.打开Git Bash 2.进入到项目所在的路径 3 ...

  4. 如何托管ASP.NET Core应用到Windows Service中

    (此文章同时发表在本人微信公众号"dotNET开发经验谈",欢迎右边二维码来关注.) 题记:正在构思一个中间件的设计,考虑是否既可以使用最新的技术,也可以兼顾传统的部署模式.所以有 ...

  5. 批发零售车销门店扫描打印一体移动销售POS机-移动终端销售O2O新模式

    应用领域 终端及移动解决方案 方案概述 通过手持终端对数据进行采集并分析及汇总.利用WIFI网络和专用终端,实时上报终端的各种销量数据,如订单数据.销量数据.库存数据.补货数据.调货数据等. 业务价值 ...

  6. POJ 3415 Common Substrings ——后缀数组

    [题目分析] 判断有多少个长度不小于k的相同子串的数目. N^2显然是可以做到的. 其实可以维护一个关于height的单调栈,统计一下贡献,就可以了. 其实还是挺难写的OTZ. [代码] #inclu ...

  7. Programming Language A 学习笔记(一)

    SML(一) 1. ML是一个函数式编程语言,理论基础为λ演算. 2. 变量声明 val x = e; 标准类型:单元(unit).布尔(bool).整型(int).字符串(string).实数(re ...

  8. Linux Shell 流程控制语句

    * 本文主要介绍一些Linux Shell 常用的流程控制语句* 1. if 条件语句:if-then/if-elif-fi/if- else-fi if [条件判断逻辑1];then command ...

  9. Poj2676

    经典DFS现在看来nice啊! package SoduKu; import java.io.InputStreamReader; import java.util.Scanner; /* *我用ro ...

  10. 搜索引擎Query Rewrite

    中心词抽取项目总结 B2B国际站Query重写.ppt 达观数据搜索引擎的Query自动纠错技术和架构详解 Natural Language Processing Simrank++ Query re ...