•   PowerShell 之 教程

PowerShell 中变量、函数命名等不区分大小写,但字符串区分大小写

powershell 脚本文件 扩展名为 .ps1

调用操作符 & + Cmd

Cmd 只能有1个

PowerShell 交互式

1. 执行数学运算

常用的(+ - * / % !)

2. 执行外部命令 或 脚本

3. 别名

可以对 命令、函数起 别名

PowerShell 语法:

注释:

单行注释:

在每行第一字符出现之前 加 #

1. 变量

自定义变量:

声明:

$var = value (自动创建,并初始化)

使用:

$var

${var}

其他功能:

1. 给多个变量赋值

$a = $b = $c = 123

2. 交换变量的值

$a = 1

$b=2

				$value1,$value2=$value2,$value1
3. 查看正在使用的变量
ls variable:
4. 验证变量是否存在
Test-Path variable:变量
5. 删除变量
del variable:变量
使用命令管理变量:
Clear-Variable
Get-Variable
New-Variable
Remove-Variable
Set-Variable
变量作用域:
$global
全局变量,在所有的作用域中有效,如果你在脚本或者函数中设置了全局变量,即使脚本和函数都运行结束,这个变量也任然有效。 $script
脚本变量,只会在脚本内部有效,包括脚本中的函数,一旦脚本运行结束,这个变量就会被回收。 $private
私有变量,只会在当前作用域有效,不能贯穿到其他作用域。 $local
默认变量,可以省略修饰符,在当前作用域有效,其它作用域只对它有只读权限。 2. 数据变量(内置)
数组
数组内可以存一切的内容, 是弱类型的语言 声明:
1) 使用逗号
$数组 = value1,value2,... 如果数组是连续的数: [可正序可反序]
$数组=1..9 --- 1,2,3,4,5,6,7,8,9
2) 使用@符号
$数组=@(value1,value2,...)
访问:
数组索引是从0开始 $var[Index] Index:
取值:
-Var.Size() ~ +(Var.Size() - 1 ) 值为负时:
逆向索引 单个元素:
访问Index位置的元素
多个元素:
访问多个索引位置对应的元素,索引之间用','区分
$var[start..end]
start: 开始位置
end: 结束位置 输出从start位置到end位置的元素 添加:
利用 $变量+=值 添加 强类型数组:
在数组变量前 加类型名
[int []] $name=@("A","B") hash表
声明(创建):
$var = @{key1="value1";key2="value2";...} 哈希表中可存储数组:
$var = @{key1="value1_1,value1_2,...";...} 访问key的值:
$var["key"] 3. 管道
4. 对象 Powershell中处处皆为对象。
对象就会有属性,方法等之称。 新建对象:
new-object:
利用该关键字创建对象,
5. 控制结构
运算符:
比较运算符:
-eq :等于
-ne :不等于
-gt :大于
-ge :大于等于
-lt :小于
-le :小于等于
-contains :包含
-notcontains :不包含
求反:
-not : 非
! : 非
布尔运算:
-and :和
-or :或
-xor :异或
-not :逆
If 条件:
条件为真才会执行以下语句 1)if(条件){
执行语句
} 2)if(条件){
执行语句
}
Else
{
执行语句
} 3) if(条件){
执行语句
}
ElseIf(条件){
执行语句
}
Switch 条件:
Switch($value)
{
匹配值1 {执行语句}
匹配值2 {执行语句}
匹配值3 {执行语句}
匹配值4 {执行语句} Default {执行语句}
} 支持通配符:
* 所有
支持正则表达式:
-regex($val)
eg: $value=18
# 使用 Switch 测试取值范围
switch($value)
{
{$_ -lt 10} {"小于10"}
10 {"等于10"}
{$_ -gt 10} {"大于10"}
} #输出
#大于10
6. 循环结构
跳出循环关键字:
break: 跳出循环语句
continue: 跳出本次循环 for:
for(;;;) ---- 和 C 一样
{
执行语句
}
foreach:
foreach (元素 in 集合)
{
执行语句
}
while:
do-while:
do{
执行语句
}
while(条件)
while:
while(条件)
{
执行语句
}
Switch:
Switch支持集合循环:
eg:
$nums = 10..7
Switch ($nums)
{
{($_ % 2) -eq 0} {"$_ 偶数"}
{($_ % 2) -ne 0} {"$_ 奇数"}
} 10 偶数
9 奇数
8 偶数
7 奇数
7. 函数
任意参数:内部变量$args 接受函数调用时接受的参数,$args是一个数组类型。
命名参数:函数的每一个参数可以分配一个名称,在调用时通过名称指定对应的参数。
预定义参数:函数在定义参数时可以指定默认值,如果调用时没有专门指定参数的值,就会保持默认值。 声明:
Function 函数名(参数表args[]) ---- 参数可以写在函数体 ,与 管道写法一致,需要加Param关键字
{
执行语句
}
删除:
del Function:函数名 调用 与 传参:
函数名 参数名1 参数名2 ... 返回值:
1个:
return 值
多个:
{
value1
value2
...
} 或
{
value1
return value2
... ---- 这里后面的不会返回, 因为return 返回后就直接结束函数了。
}
管道函数:
顺序模式: --- 效率低
将上一个执行结构保留到 $input
eg:
PS E:mossfly.com> Function output
>> {
>> $input
>> } PS E:mossfly.com> 1,2,3 | output
流模式: --- 高效率
利用begin、process、end 语句块
Function 函数名
{
begin
{ }
process
{ }
end
{ }
}
8. 错误处理
9. 字符串相关操作: Powershell转义字符表
转义字符 描述
`n 换行符
`r 回车符
`t 制表符
`a 响铃符
`b 退格符
`’ 单引号
`” 双引号
`0 Null
“ 反引号本身 定义多行文本
@" 字符串 "@ 字符串操作符:
-f
格式化字符串
占位符{0},{1},{2},{3},... *
代表一个字符串 “PsTips.Net” -like “*”
+
合并两个字符串 “Power” + “Shell” -replace,-ireplace 替换字符串,大小写不敏感 “PsTips.Net” -replace “tip”,”1″ -creplace 替换字符串,大小写敏感 “PsTips.Net” -replace “Tip”,”1″ -eq, -ieq 验证是否相等,大小写不敏感 “Power” -eq “power” -ceq 验证是否相等,大小写敏感 “Power” -eq “Power” -like, -ilike 验证字符串包含关系,允许模式匹配,大小写不敏感 “PsTips.Net” -like “p*” -clike 验证字符串包含关系,允许模式匹配,大小写敏感 “PsTips.Net” – clike “P*” -notlike, -inotlike 验证字符串不包含关系,允许模式匹配,大小写不敏感 “PowerShell” -notlike “PS*” -cnotlike 验证字符串不包含关系,允许模式匹配,大小写敏感 “PowerShell” -cnotlike “PO*” -match,-imatch 验证模式匹配,大小写不敏感 “PowerShell” -match “P*” -cmatch 验证模式匹配,大小写敏感 “Hello” -match “[ao]” -notmatch, -inotmatch 验证模式不匹配,大小写不敏感 “Hello” -notmatch “[ao]” -cnotmatch 验证模式不匹配,大小写敏感 “Hello” -cnotmatch “[ao]”

PowerShell 语法的更多相关文章

  1. PowerShell 语法结构

    Get-Service -name P* [int]$a = 2 write-output $a [string]$b = "string" write-output $b #$c ...

  2. PowerShell~语法与运算符

    基本语法 变量:$开头 $a = "Hello" 条件语句:if else ) { Write-Host "偶数" } else{ Write-Host &qu ...

  3. PowerShell 语法备忘

    1.挡可能出现 .0 的时候需要加上引号 2.使用 -Join 或者 + 进行字符串拼接 3.在cmd 命令下可以使用 set /a  s=1+2  表示需要进行计算,而不是拼接

  4. 微软准备开源PowerShell

    微软有计划在近期内开源PowerShell 近日微软再次在向开源投出橄榄枝, PowerShell是面向Windows和Windows Server的自动化平台和脚本语言,帮助用户简化系统的管理.在纳 ...

  5. 1.Powershell认识

    Windows PowerShell 是一种命令行外壳程序和脚本环境,自Windows Server 2008开始就有内置于系统当中,有取代CMD之势.管理员使用Powershell完成一些日常重复的 ...

  6. 【转】PowerShell入门(十一):编写脚本模块

    转至:http://www.cnblogs.com/ceachy/archive/2013/03/08/PowerShell_Script_Module.html 现在通过编写模块就可以在PowerS ...

  7. powershell开源新闻及简介

    作者:PowerShll传教士 问:微软的PowerShell脚本语言已经开源了 ? 答:绝对真的!已经! 问:源码在哪? 答:微软.net源码网站.   http://referencesource ...

  8. linux下的powershell,pash试用手记

    ------1 概述------ 1.1 简单来说linux,unix是非常依赖脚本的,而win不是.win中有很多图形程序+c库,效率不比脚本差.点几下鼠标照样能完成需求.当 然,图形和字符是两码事 ...

  9. powershell命令大全

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

随机推荐

  1. 6 vue-element.ui 左侧导航栏

    <template> <div> <el-menu :default-active="'/'+activeIndex2" mode="ver ...

  2. 小程序开发-小程序tabBar不显示的原因分析

    在尝试小程序开发时,tabBar这个是个非常常见的组件,但是今天在进行开发时,设置了TabBarb并没有显示,被这个问题困扰了近半小时,现在将排查问题后所得到的经验记录下来. 首先 如果tabBar不 ...

  3. mysql如何查询多样同样的表/sql分表查询、java项目日志表分表的开发思路/按月分表

    之前开发的一个监控系统,数据库的日志表是单表,虽然现在数据还不大并且做了查询sql优化,不过以后数据库的日志表数据肯定会越来越庞大,将会导致查询缓慢,所以把日志表改成分表,日志表可以按时间做水平分表, ...

  4. [业界方案] 用SOFATracer学习分布式追踪系统Opentracing

    [业界方案] 用SOFATracer学习分布式追踪系统Opentracing 目录 [业界方案] 用SOFATracer学习分布式追踪系统Opentracing 0x00 摘要 0x01 缘由 &am ...

  5. [Java数据结构]Queue

    Queue扩展了Collection,它添加了支持根据先进先出FIFO原则对元素排序的方法. 当对Queue调用add和offer方法时,元素始终添加在Queue的末尾:要检索一个元素,就要使用一个元 ...

  6. UBer面向领域的微服务体系架构实践

    介绍 最近,人们对面向服务的系统架构和微服务系统架构的缺点进行了大量的讨论.尽管仅仅在几年前,由于微服务体系架构提供了许多好处,如独立部署的灵活性.明确的所有权.提高系统稳定性以及更好地分离关注点等, ...

  7. 一些免费的API

    Github 接口 Github 为我们提供了一些免费的 API 接口,利用这些接口我们可以开发一些工具. 接口文档地址为 https://docs.github.com/en/rest 下面是一个例 ...

  8. 别再眼高手低了! 这些Linq方法都清楚地掌握了吗?

    不要再眼高手低了,这些Enumerable之常见Linq扩展方法都清楚掌握了吗?其实这是对我自己来说的! 例如:一个人这个技术掌握了一点那个技术也懂一点,其他的好像也了解一些,感觉自己啥都会一点,又觉 ...

  9. 摆书 book

    题目描述: dxy家收藏了一套书,这套书叫<SDOI故事集>,<SDOI故事集>有n(n≤19)本,每本书有一个编号,从1号到n号. dxy把这些书按编号从小到大,从上往下摞成 ...

  10. 算法数据结构 | 三个步骤完成强连通分量分解的Kosaraju算法

    强连通分量分解的Kosaraju算法 今天是算法数据结构专题的第35篇文章,我们来聊聊图论当中的强连通分量分解的Tarjan算法. Kosaraju算法一看这个名字很奇怪就可以猜到它也是一个根据人名起 ...