PowerShell 语法


  •   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]”
原文地址:https://www.cnblogs.com/Kernel001/p/11215357.html