概述
PowerShell脚本学习
- 前言
- 1. PowerShell与cmd的区别
- 2. PowerShell脚本
- 2.1 xxx-Item
- 2.1.1 创建目录
- 2.1.2 创建文件
- 2.1.3 删除文件
- 2.1.4 删除目录
- 2.2 文件操作
- 2.2.1 添加内容
- 2.2.2 查看内容
- 2.2.3 设置内容
- 2.2.4 添加内容
- 2.3 PowerShell执行策略
- 2.3.1 查看当前执行策略
- 2.3.2 设置策略
- 2.4 变量操作
- 2.4.1 定义变量- $x方式(推荐)/Set-Variable
- 2.4.2 查看变量
- 2.4.3 清空变量
- 2.4.5 删除变量
- 2.4.6 计算变量
- 2.4.7 常量
- 2.4.7 变量不同类型自带API的使用
- PowerShell自带的变量
- 3.1 系统变量
- 3.1.1 表值类型
- 3.1.2 数组对象
- 将文件复制到另一个文件夹下
- 待续
前言
运行Bamboo的时候,有script需要用到PowerShell,记录一下学习过程。
1. PowerShell与cmd的区别
Windows PowerShell® 是基于任务的命令行管理程序和脚本语言,专为进行系统管理而设计。 在 .NET Framework 的基础上构建的 Windows PowerShell 可帮助 IT 专业人士和高级用户控制和自动执行 Windows 操作系统以及在 Windows 上运行的应用程序的管理。
powershell和cmd区别:1、CMD写的BAT脚本我们看作是面向过程的,而PowerShell则是面向对象的,是一种站在使用者的角度进行脚本的编写;2、CMD只能执行基本的任务,PowerShell因为是基于【.NET】面向对象的。
2. PowerShell脚本
2.1 xxx-Item
2.1.1 创建目录
对大小写不敏感
New-Item test -ItemType Directory
2.1.2 创建文件
cd .test
New-Item test.txt -ItemType File
2.1.3 删除文件
Remove-Item test.txt
2.1.4 删除目录
Remove-Item test
2.2 文件操作
2.2.1 添加内容
Add-Content .test.txt "Hello world"
2.2.2 查看内容
Get-Content .test.txt
2.2.3 设置内容
Set-Content .test.txt "Happy new year"
提示:设置内容是覆盖,而添加是在文件末添加内容
2.2.4 添加内容
"william fu!"| out-file -Append .test.txt
2.3 PowerShell执行策略
2.3.1 查看当前执行策略
Get-ExecutionPolicy
默认为:RemoteSigned
策略说明:
类型 | 执行权限 |
---|---|
Restricted | 为脚本不能运行,是默认设置 |
Unrestricted | 为允许所有的脚本运行 |
RemoteSigned | 为只能运行本地创建的脚本,不能运行从网上下载的脚本,除了有数字签名证书 |
Allsigned | 为只运行有受信任的发布者签名的脚本 |
2.3.2 设置策略
Set-ExecutionPolicy Unrestricted
需要管理员权限打开PowerShell
2.4 变量操作
2.4.1 定义变量- $x方式(推荐)/Set-Variable
$a = 1
$str = "hello world"
Set-Variable a 1
Set-Variable str "helloworld"
可以重置变量
2.4.2 查看变量
# (查看所有变量)
Get-Variable
# 查看变量a
Get-Variable a
# 查看变量str
Get-Variable str
# 查看变量是以s开头的,不区分大小写
Get-Variable s*
1.查看所有变量2.查看变量 a
3.查看变量 str
4.查看以s开头的变量(不区分大小写)
2.4.3 清空变量
# 清空变量a
Clear-Variable a
# 清空多个变量,与查看变量一样的操作
Clear-Variable str*
1.清空变量a
2.清空多个变量
这只是对变量的值进行清空,变量实际是还存在的
2.4.5 删除变量
# 删除变量a
Remove-Variable a
# 删除多个变量,与前面清空、查询是一样的操作
Remove-Variable str*
1.删除变量a
2.删除多个变量
2.4.6 计算变量
- 四则运算、赋值运算符、逻辑运算
$interget1=1
$interget2=2
# 加、减、乘、除、模
$interget3=$interget1(+|-|*|/|% =|+=|-=|*=|/=|%= !|not|and|or)$interget2
1. 加、减、乘、除、模
字符串操作
$str="hello"
$str1="world"
# 输出,查看结果
Write-Host ($str+$str1)
# 字符串截取
$str.Substring(0,5)
1.字符串操作
注意:使用Write-Host时后面的内容需要使用 () 先进行计算,否则运算符会当作字符串处理
- 比较运算符
比较运算符 | 说明 |
---|---|
-eq | 等于 |
-ceq | 区分大小写 |
-ne | 不等于 |
-gt | 大于 |
-ge | 大于等于 |
-lt | 小于 |
-le | 小于等于 |
-contains | 包含 |
if ($full -eq "-f")
{
# List of additional solutions required for full build
$solutionPaths += (
"../",
"../modules/file-management"
)
}else{
Write-host ""
Write-host ":::::::::::::: !!! You are in development mode !!! ::::::::::::::" -ForegroundColor red -BackgroundColor yellow
Write-host ""
}
- example
2.4.7 常量
Set-Variable -Name conpany -Value "联想信息产品" -Option Constant
# 尝试改变变量值,其实这里会异常的
$conpany="联想电子信息"
- test
2.4.7 变量不同类型自带API的使用
$date=Get-Date
# 打印年月日部分
Write-Host $date.Date
# 变量增加一天
Write-Host ($date.AddDays(1))
PowerShell自带的变量
名称 | 说明 |
---|---|
$^ | 前一命令行的第一个标记 |
$$ | 前一命令行的最后一个标记 |
$_ | 表示表示当前循环的迭代变量。 |
$? | 前一命令执行状态,成功(Ture) 或者 失败(False) |
$Args | 为脚本或者函数指定的参数 |
$Error | 错误发生时,错误对象存储于变量Error 中 |
$Foreach | 引用foreach循环中的枚举器 |
$Home | 用户的主目录 |
$Host | 引用宿主 POWERSHELL 语言的应用程序 |
$Input | 通过管道传递给脚本的对象 |
$Switch | switch 语句中的枚举器 |
# Build all solutions
foreach ($solutionPath in $solutionPaths) {
$solutionAbsPath = (Join-Path $rootFolder $solutionPath)
Set-Location $solutionAbsPath
dotnet build --configuration Release
# $? 前一命令执行状态,成功(Ture) 或者 失败(False)
if (-Not $?) {
Write-Host ("Build failed for the solution: " + $solutionPath)
Set-Location $rootFolder
exit $LASTEXITCODE
}
}
3.1 系统变量
类型 | 说明 |
---|---|
[int][long][string][char][bool][byte][double][decimal][single] | 表值类型 |
[array] | 数组对象 |
[xml] | XML对象 |
[hashtable] | 哈希表对象,类似于一个字典对象 |
3.1.1 表值类型
[int] $inter="1"
# 改变量值,这会异常
$inter="1a"
[string] $str="hello world"
3.1.2 数组对象
# 定义数组
$arr=@(
"张三",
"李四",
"王五"
)
# 直接使用下标操作数组
Write-Host ("第一个姓名:"+$arr[0])
# 遍历输出
foreach($name in $arr){
Write-Host $name
}
- test 数组
将文件复制到另一个文件夹下
[string]$sourceDirectory = "C:Usersfuwh2DesktopVantageDB"
[string]$destinationDirectory = "D:"
Copy-item -Force -Recurse -Verbose $sourceDirectory -Destination $destinationDirectory
复制项永远不会删除目标中的额外文件或文件夹,但 -force如果文件已存在则会覆盖它
待续
参考:PowerShell脚本学习
最后
以上就是清爽曲奇为你收集整理的PowerShell脚本学习前言1. PowerShell与cmd的区别2. PowerShell脚本待续的全部内容,希望文章能够帮你解决PowerShell脚本学习前言1. PowerShell与cmd的区别2. PowerShell脚本待续所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复