powershell概述
Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NETFramework的强大功能。它引入了许多非常有用的新概念,从而进一步扩展了在 Windows 命令提示符和 Windows Script Host 环境中获得的知识和创建的脚本。
powershell是一个shell,定义好了一些命令操作系统,特别是与文件系统交互,能够启动应用程序,甚至操纵应用程序。PowerShell还能允许将几个命令组合起来放到文件里执行,实现文件级的重用,PowerShell 能够充分利用copy.Net类型和 COM 对象,来简单地与各种系统交互,完成各种复杂的、自动化的操作。
打开方式:
- 附件找到powershell
- Win + R–>输入powershell
PowerShell-ISE
Windows PowerShell 集成脚本环境 (ISE) 是 Windows PowerShell 的主机应用程序。在 WindowsPowerShell ISE 中,可以在单一 Windows 图形用户界面中运行命令以及编写、测试和调试脚本,该用户界面具有多行编辑、Tab 补齐、语法着色、选择性执行、上下文相关帮助等功能,而且还支持从右到左书写语言。此主机应用程序最多还可以包括八个会话。可以自定Windows PowerShell ISE 的外观。Windows PowerShell ISE 还有自己的 Windows PowerShell 配置文件,您可以在其中存储在Windows PowerShell ISE 中使用的函数、别名、变量和命令。
- Win + R -->输入powershell ISE
输入与输出
powershell 对大小写不敏感
输入
read-host("请输入XX")
输出
ehco / echo()
write-output / write-output()
write-error / write-error()
弱类型和强类型
弱类型:数据类型根据值的类型定义
强类型:强行规定数据类型,值的类型必须符合数据类型
变量
可以改变的量
变量使用:$变量名
赋值格式:$变量名 = 值
环境变量
$env:变量名
赋值格式: $env:Demo_HOME = “D:\Maven”
ls variable: -->查看环境变量
需要写入环境变量时
- 写入系统环境变量: [System.Environment]::SetEnvironmentVariable(“name”,“value”,“machine”)
- 写入用户环境变量:
[environment]::SetEnvironmentVariable(“name”,“value”,“User”)
运算符
++ 自增运算
-- 自减运算
常量
不能改变的量
常量的申明中不需要加 $ ,但在使用时需要加上。
- Set-Variable -name 常量名 -Value 常量值 -Option Constant
常量,存储在栈里 - Set-Variable -name 常量名 -Value 常量值 -Option readonly
只读变量,存储在方法区里
数组
一个容器、一个相同数据类型的容器
$数组名=元素1,元素2,元素3
$数组名[下标]
-1 < 下标 <=下 数组长度-1
$array_name=value1,value2,value3 #定义数组,用 逗号 隔开
$array_name=value0..valueN #连续数字用 ..
$array_name=@() #定义 空数组
字符串
所有用双引号引上的就是字符串
任意字符串 + 任意数据类型 --> 结果为字符串
任意数据类型 + 任意字符串 --> 结果为前面的数据类型,(a + s )结果为a的数据类型
-eq
[String]::IsNullOrEmpty(str)
常用方法与属性
属性
Length #用于获取字符串长度
方法
Contains(str) --- 验证是否 包含 关系,大小写敏感
Equals(str) --- 判断两个字符串是否 相等
EndsWith(str) --- 判断此字符串是否是以指定字符串 结束
StartsWith(str) --- 判断此字符串是否是以指定字符串 开始
Split() --- 字符串 拆分,以空格 拆分; 或以指定子串 拆分
SubString(start,end) --- 截取 字符串子串
ToUperInvariant() --- 当前字符串全部转 大 写 ToUper() 亦可
ToLowerInvariant() --- 当前字符串全部转 小 写 ToLower() 亦可
Insert(int,str) --- 在指定位置 插入 子串,下标从1 开始
Remove(start,length) --- 删除 从指定位置开始到指定长度的子串,下标从1 开始
Trim() --- 去掉字符串前后 空白格
数据类型
--数字型
--整数型
--字节型 (byte)(1字节)
--短整型 (short)(2字节)
--整型 (int)(4字节)
--长整型 (long)(8字节)
--浮点数型
--单精度浮点型 (float)
--双精度浮点型 (double)
--非数字型
--字符型(char)
--字符串型 (string)
--布尔型 (boolean)
int型只能是数字,如果是被双引号引用的数字会自动转型为int
当字符串中只有一个字符的时候,可以转型为字符。往char存放数字默认为ASCLL值。但字符不会默认转成Ascll码
练习
- 计算 $i++ + $i++ + ++i + $i++ + $i 的值,说明原因
`i++ : 下次运行到 i 处进行+1操作
++i : 现在即时对 i 进行+1操作
/---------------------------/
$i++ + $i++ + ++$i + $i++ + $i
$i + $i+1 + [($i+1)+1]+1 + $i+3 + ($i+3)+1
= 5$i + 11
-
使用强类型定义【安全开发生命周期、机械工业出版社、58.50、370(页)、342.63(克)】
-
定义变量进行数学操作
-
在Byte类型中存入 -1 ,在 int 类型中存入字符串和小数看看效果
byte 存入 -1 :
int 存入字符串:
int 存入小数:
-
打印自己的 path 环境变量
Write-Output($env:Path)
6. 为自己的系统设置一个属于你自己的用户环境变量,变量名为(yourname_home),值为 1
[environment]::SetEnvironmentVariable("XIAN_HOME","1","USER")
- 不限定使用强弱类型,定义自己的名字、身高、年龄、专业、学校、毕业时间
$name
$height
$age
$major
$school
$year
$array_xianrui="xianrui","175cm","23","IOT","nepu","2019"
$array_tian="tian","172cm","22","TAP","sciu","2020"
$array_jiang="jiang","174cm","24","CCS","wpfu","2018"
$array_hemiao="hemiao","177cm","25","RWA","slgu","2017"
$array_group=$array_xianrui,$array_tian,$array_jiang,$array_hemiao
Write-Output($array_group)
字符串练习
[String]$str="Windows PowerShell"
在字符串最后加上”v 5.1.1“
在字符串最后加上“8362752”
找到752的位置,在前面加上“.”
找到PowerShell的位置,并将其裁剪下来
将“18362.752”替换为2
在“v 5.1.2”前面添加“PSVersion”
删除“PSVersion”
判断版本是否是“5.1.2”,给出true或false的结果
判断是否包含“Power”这个字符串,给出true或false的结果
str是否以WIN开头?是否以v 5.1结尾
在str中查找第一次出现o和最后一次出现o的位置
将str转成大写
[String]$str="Windows PowerShell"
Write-Output($str)
$str=$str + "v 5.1.1"
Write-Output($str)
$str=$str + "8362752"
Write-Output($str)
$a=$str.IndexOf("752")
$str=$str.Insert($a,".")
Write-Output($str)
$b=$str.IndexOf("PowerShell")
$l="PowerShell".Length
$str_2=$str.SubString($b,$l)
Write-Output($str_2)
$str=$str.Replace("18362.752","2")
Write-Output($str)
$block=$str.IndexOf(" ")
$str=$str.Insert(1+$block,"PSVersion")
Write-Output($str)
$l_2="PSVersion".Length
$str=$str.Remove(1+$block,$l_2)
Write-Output($str)
Write-Output($str.Contains("5.1.2"))
Write-Output($str.Contains("Power"))
Write-Output($str.StartsWith("Win"))
Write-Output($str.EndsWith("v 5.1"))
Write-Output($str.IndexOf("o"))
Write-Output($str.LastIndexOf("o"))
Write-Output($str.ToUpper())