|
发表于 2019-2-13 21:14:57
|
查看: 6023 |
回复: 1
第一部分 基本概念
基本笔记
微软在cmd的基础上对windows系统的维护手段进行了扩充,提供了更完善的shell。Windows 7之后系统自带powershell,在运行中输入powershell即可调用交互界面。可以通过脚本的方式组织PowerShell命令脚本后缀是.ps1.
在powershell界面调用powershell脚本的方式是 PowerShell ”& ’脚本路径‘ 参数“.
PowerShell脚本中的注释使用#开头.
命令
三个帮助命令: get-command, get-help, get-member.
get-date 获取时间,输出为时间字符串格式。
get-process 获取当前系统运行的进程。
特性
powershell支持管道。管道中可以传递对象,基于.net的对象体系。
第二部分 变量
自定义变量
可以把管道或者命令的输出保存在变量中,供后续使用。PowerShell可以把文本或者对象存储在变量中。变量的定义使用$加字符串的形式.
例如:
$process = Get-Process
$process.Count
$process | Where-Object { $_.ID -eq 0}
变量可以通过赋值为$null进行释放.
环境变量
PowerShell有以下几种方式获取环境变量:
1)获取所有的环境变量
Get-ChildItem env:
2)获取单个环境变量
$env:variablename
例如$env:username
3)通过Get-ChileItem获取某个环境变量
Get-ChildItem env:variablename
Get-ChildItem Environment::variablename
PowerShell提供一个环境驱动器,称为env;PowerShell提供了一个环境提供者,称为Environment. 访问环境驱动器使用env:variablename, 访问环境提供者,使用Environment::variablename.
提供者
提供者是什么?
环境提供者是Environment,通过访问环境提供者可以获取到环境变量。
访问提供者的方法是Get-Content。
如果访问环境变量,可以使用Get-Content env:variablename或者Get-Content Envrionment::variablename
变量的范围
可以指定变量的范围, 可以在变量前增加范围的关键字,包括:
GLOBAL
SCRIPT 当前脚本范围
LOCAL 当前范围
例如: $SCRIPT:myVariable = value
当你定义了变量的范围,PowerShell 支持两个附加范围的修饰选项:Private和AllScope。
关于变量范围的帮助在 Get-Help About-Scope
第三部分 .NET对象
访问
PowerShell访问静态或者实例化的对象的方法如下:
1)访问静态方法 [Classname]::MethodName(参数列表)
[Web.HttpUtility]::UrlEncode("http://www.csdn.net") 访问这个方法需要先Load System.Web
21)访问对象实例的方法 $ObjectRefernce.MethodName(参数列表)
3)访问静态属性 [ClassName]:ropertyName
4)访问对象实例的属性 $ObjectReference.PropertyName
创建.NET对象
使用New-Object来创建对象实例。不带参数时,创建默认构造函数的对象,也可以携带参数调用带参数的构造函数进行创建。
例如:
$generator = New-Object System.Random
$image = New-Object System.Drawing.Bitmap source.gif
如果希望创建的实例在独立的库文件中,则需要先加载库文件,PowerShell默认没有加载这些库文件。
例如:
[Reflection.Assembly]:oadWthPartialName(*System.Windows.Forms)
$image = New-Object System.Drawing.Bitmap source.gif
$image.Save("source_vonverted.jpg", "JPEG")
第四部分 COM对象
使用New-Object -ComObject ProgId 的方式可以通过ProgID来创建一个COM对象。
第五部分 修改对象或类
可以通过Add-Member方法向对象或者向类的所有对象题那家自定义的属性和方法。
第六部分 循环和流程控制
比较和逻辑操作
可以使用 -eq等运算符进行数据的比较。比较运算符包括:-eq -ne -ge -gt -lt -le -like -notlike -match -notmatch -contains -not contains -is -isnot
逻辑操运算符包括-and -or -xor -not
条件语句
if else elseif
swith
for foreach while do
第六部分 字符串和非结构化文本
字符串
PowerShell字符串分为两类:
1)按照字面的字符串(literal) 使用单引号括起来。
2)可扩展的字符串(expanding) 使用双引号括起来。
这两类如果要添加对应的引号,则使用两个引号字符来表示,也可以采用另外一种方式进行表示避免转义:
$myString = ’This‘ + “‘” +’s my world‘
多行或者格式化的字符
存在换行的字符串在引号括起来之外再机上@符号。
例如:
$myString = @" ##@"和“@成为here string, here string 之后不允许出现其他字符。
This is the line
This is the second line
"@
在字符串中存放特殊字符
在扩展字符串中通过转义字符来存放特殊字符。 ·n表示换行。
主要原因是脚本中\通常用来分隔文件夹,因此不用来做转义字符。
在字符串中放入变量
在可扩展的字符换中,可以通过包含变量名称的方式将变量的值插入。使用非扩展的方式存放时,系统不会把$以及后续部分解析成变量。
转义字符的帮助 Get-Help About_Escape_Character 或者 Get-Help About_Special_Charater.
字符串设置格式
PowerShell字符串设置符-f使用和.NET中String.Format()方法相同的字符格式作为规则。他将设置的格式放在左侧,将内容放在右侧。
例如
$number1 = 111
$number2 = 222
"$number2 divided by $number1 is " + $bunber2 / $number1
可以改写成
"{0} divided by {1} is {2}" -f $number2, $number1, ($number2/$number1)
字符串查找
可以使用-like来查找字符串中是否包含另一个含有通配符字符串表示的内容。
"Hello World" -like '*llo w*'
可以使用-match来查找字符串中是否包含另一个正则表达式的内容。
使用Contains() 来表示一个字符换中是否包含另外一个字符串
使用IndexOf()方法来表示字符串中含有应另一个字符串的位置。
字符串转换
使用Replac()方法来在字符串中替换另一段字符串。
使用-replace 来使用正则表达式进行替换。
使用ToUpper()和ToLower的方法来进行大小写转换。
使用Trim()来去掉用户输入开始或结尾的空格。
格式化日期的格式
Get-Date -Date "03/02/2013 9:46 PM" -Format "dd-MM-yyyy hh:mm:ss"
Get-Date -Date “03/02/2013 9:46 PM" -UFormat "%d-%m-%y %I:%M:%s"
也可以
$date = [DateTime]"03/02/2013 9:46 PM"
方法一 "{0:dd-Mm-YYY hh:mm:ss} -f $date
方法二 $date.ToString("dd-MM-yyyy hh:mm:ss")
文本流转换为对象
Convert-TextObject可以将文本转换为一组对象。
第七部分 数字和计算
PowerShell通过.Net Framework中的System.Math类进行数学计算。
[Math]::Abs()
[Math]:ow()
[Math]::Sqrt()
[math]::Sin()
[Math]::Tan()
[Math]::ACos()
[Math]::ATan()
---------------------
原文:https://blog.csdn.net/digitalcastle/article/details/8546475
|
温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【 投诉建议】板块发帖举报。
|