powershell读书笔记

作者: 小小小小小小小小小小銀 | 来源:发表于2017-10-11 01:53 被阅读129次

    ·What is PowerShell?

    powershell读书笔记

      提供了命令行界面的互动式Shell环境和脚本语,以协助管理员执行弹性化、自动化的工作。

    ·环境依赖基于

      .NET FrameWork

    ·PowerShell Cmdlets

      · Command lets [动词-名词]

      · 用.NET语言所写成的指令,每个Cmdlets只具单 任务,而Cmdlets与Cmdlets通过管道符链接结合就可以协作出复杂的功能工作

      · Get-Command 显示可用的Cmdlets

      · CLI中的主要命令

        - Shell Function(CLI可用代码)

        - Powershell Scripts(.ps1)

        - Native commands(.exe,.bat,etc.)

    ·Pipelines - 管道

      · 用于从一个Cmdlets向另一个Cmdlets传递数据

      · 提供了一个创建简单命令行代码脚本的机制

      · 实现并发执行

      · 为了便于阅读,可以分为多行

    ·PowerShell中的操作技巧

      · Aliases 别称

        - Cmdlet的缩写或者昵称

        - Transitional alias

        - 类似曾经用过的命令- dir,copy,ls,cat

        - 可以自定义别称方便使用

      · Convenience alias

        - Cmdlet的缩写

        - get-command = gcm,get-wmiobject = gwmi

    ·PowerShell 中的脚本执行

      ·使用Set-ExecutionPolicy更改

      ·改变PS的执行策略

        - Restricted,默认设置,不允许运行任何脚本

        - AllSigned,仅运行受信任脚本

        - RemoteSigned,运行本地脚本,不管这些脚本是否受信任;

          如果是从Internet下载的脚本,则必须是受信任的脚本才能够运行。

        - Unrestricted,允许运行所有脚本,甚至是不受信任的脚本

    ·DEMO

      ·自定义别称、更改执行策略

        set-Alias gps Get-process

      Get-Command [获取当前可以使用的所有cmdlet命令]

      Get-Process [获取当前系统所有的进程]

      Get-Process | where ($_.CPU -gt 20)

      gps | sort cpu -Descending(使用管道链接并行执行)

      demo.ps1 (使用脚本文件的方式执行)

    ·PS中的变量定义、使用

      · 不需要定义或声明数据类型

      · 在变量前加“$”

      · 定义变量的规则

        - 变量可以是数字 $618

        - 变量可以是字符串 $0xW

        - 变量可以是特殊字符${@0xW}

      · 内置的变量

        - $pshome

        - $home

        - $profile

    ·强大的帮助系统

      · get-help,help or ?

      · 可以使用通配符获取选项列表

        -get-help get-*

        -get-help *service*

    ·DEMO

    $var = 0618

    $var = "silvers"

    $var = "0xW"

    $var1 = "_Silvers"

    $var2 = "$var $var1"

    $var3 = '$var $var1' (输出结果为[$var $var1]''会被当成字符串来处理)

    Get-Date (获取当前系统的日期时间)

    $data = Get-Date

    $data.AddDays(5)(输出结果为当前时间后推5天)

    Get-Help get-Command

    Get-Help get-Command |more (逐行输出)

    Get-Help get-Command -detailed/full (全部的详细信息)

    Get-Help Get-Process -full

    Get-Process | Sort-Object ws

      · 使用管道符链接命令的方式执行

    Get-Process |

    sort ws |

    fl (fl是format list命令的缩写)

    ·属性和方法

      · 使用get-member方法来获取属性和方法的详细列表

      · $var = 618; $var | get-member

        $var = "silvers"; $var | get-member

      · 使用TAB键来选择变量的属性和方法

        例:$var.[TAB]

    ·语法和操作

      · 引号的使用,单引号和双引号的区别

        单引号里的是字符串;双引号里的是引用变量

      · 定向输出。使用“>”符号定向输出

      · 变量的注释。使用“#”符号编写注释

      · 优先运算符

      · 丰富的语法

        -eq;-ne;-gt;-ge;-lt;-le;-like;

        -notlike;-contains;-notcontains

      · 支持算术运算符

        +;*;-;/;=;+=;-=;*=;/=;%=

      · 支持逻辑运算符

        -and;-or;-xor;-not;-is;-isnot;-as

    ·变量和数据类型

      ·变量间的操作

      变量之间可以进行乘法

      ·变量的强制类型转换

      ·Set-variable,new-variable,clear-variable和remove-rariable的使用

      变量的声明、创建、删除、清除等

      ·变量的4中模式:

      local,script,global,private

      变量的作用域

    ·数组、安全、Whatif

      · 数组的定义及使用方法

        - $var = 1..10

        - $var +=12,43

      · 创建受信任的安全脚本

      使用makecert.exe创建受信任的安全脚本

      · 使用-Whatif预览执行结果

    ·循环、判断语句

      · 循环语句

        - Foreach/for

        - While

        - Do while

        - Do until

      · 判断语句

        - If

        - switch

      · 循环控制语句

        - Break

        - continue

    ·循环语句

      · Foreach

        - 集合的操作

        - 每个对象都进行操作

        - Foreach是foreach-object的昵称

        - 使用foreach的同时,我们已经默认定义了$n,$i两个变量,$n用与存放foreach运行的次数,$i用于存放每次foreach运行的结果

      · For

        - 与foreach相似

    while,do while,do until,if,switch,break,continue

      · While

        当条件成立时,执行操作

      · Do while

        - 操作至少执行一次

      · Do until

        - 操作至少执行一次

        - 当条件不成立时,结束执行

      · If/switch

        - If与else、elseif使用。不需要then/end if

        - Switch与select case相似

      · Break:匹配时跳出循环

        continue:调回循环起始位置

    ·格式的限定

      · 使用format限定操作结果的显示格式

      · Format的4种显示格式

        - Format-list (fl)

        - Format-table(ft)

        - Format-wide (fw)

        - Format-custom(fc)

      · 在命令结尾使用 -format来限定结果的显示格式

    ·文件的导出、函数的定义

      · 使用导出命令将结果导出至指定文件

        - 支持CSV

        - 支持XML

        - 支持HTML

      · 导入文件同样被支持

        - 可以支持CSV文件导入

        - 可以支持XML文件导入

    ·错误调试

      · 确定错误

        - 使用$?测试命令执行成功or失败

        - 使用$erroractionpreference设置错误执行模式

          ·Continue

          ·Stop

          ·slientlycontinue

      · 解决错误

        - Trap

          调试特殊错误

          确定错误响应(continue、break)

        - -ea

          定义当错误发生以后,如何继续执行

    ·脚本调试

      · 使用set-psdebug进行调试

        - 激活set-psdebug功能

        - 控制追踪等级

        - 脚本逐步执行

    ·DEMO 演示

    $ver = 123

    $ver | get-member

    get-process >d:\gps.txt

    $var ="0xW" # This is String

    $var *4

    $var2 += $var*2

    $var -like -like "xw" (False)

    $var -notlike "xw"  (True)

    $var1 = 10

    function one{"the variabale is $var1"}

    function two{$var1=20,one}

    export-Clixml d:\demo.xml(导出)

    import-Clixml d:\demo.xml (导入)

    powershell读书笔记

    =====以下来自网路博客为验证测试,估计现在不这样用了吧Windows powershell官方网站

    ·使用Makecert.exe创建信任脚本

    · 使用Makecert命令创建信任证书

      makecert -n "CN=MyRoot" -a sha1-eku1.3.6.1.5.5.7.3.3 -r-sv root.pvk

      root.cer--ss Root -sr localMechine

    · 创建信任证书

      makecert -pe-n "CN=MyCertificate"-ss MY -a sh1 -eku 1.3.6.1.5.5.7.3.3 -iv

      root.pvk -c root.cer

    · 将存在的.ps1脚本进行信任签名

      Set-AuthenticodeSignature D:myscript ps1 $cert

    ·使用Makecert.exe创建信任脚本

    · 核实此安装过程:gci cert:\CurrentUser\my -codesigning

    · 使用$cert = @(gci cert:\currentuser\my -codesigning)[0]检索首次安装的代码签名证书(如果安装了多个证书并希望使用第一个意外的其他证书,只需将"0"改为相应的数字即可)。

    · 使用Set-AuthenticodeSignature myscript.ps1 $cert签名文件

    · 打开脚本文件观察变化

    ·Makecert的参数

    · 选项 ·说明

    -n x509name    指定主题的证书名称。此名称必须符合x_500标准。最简单的方法是在双引号中指定此名称,并加上前缀CN=;例如,"CN=myName".

    -p              将所生成的私钥标记为可导出。这样可将私钥包括在证书中。

    -sk keyname    指定主题的密钥容器位置,该位置包含私钥。如果密钥容器不存在,系统将创建一个。

    -sr location    指定主题的证书存储位置。location可以是默认值或者location

    -ss store      指定主题的证书存储名称,输出证书即存储在那里。

    -# number      指定一个介于1和2,147,483,647之间的序列号。默认值是由Makecert.exe生成的唯一值。

    -$ authority    指定证书的签名权限,必须设置为comanendal(对于商业软件发行者使用的证书)或者imdivalhousal(对于个人软件发行者使用的证书)。

    -?            显示此工具的命令语法和基本选项列表

    -!            显示此工具的命令和扩展选项列表。

    ·Makecert的参数(扩展)

    ·选项 ·说明

    -a algorithm 指定签名算法。必须是md5(默认值)或sha1.

    -b mm/dd/yy            指定有效的开始时间。默认为证书的创建日期。

    -cy certType            指定证书类型。有效值是end(对于最终实体)和authority(对于证书颁发机构)。

    -d name                显示主题的名称

    -eku oid[,oid]          将用逗号分割的增强性密钥用法对象标识符(OID)列表插入到证书中。

    -h number              指定此证书下面的树的最大高度。

    -ic file                指定颁发者的密钥容器名称

    -ik keyName            指定颁发者的密钥类型,必须是signalure,exchange或一个表示提供程序类型的整数。默认情况下,可传入1表示交换密钥,传入2表示签名密钥。

    -in name                指定颁发者的证书名称。

    ·使用PowerShell管理IIS

    · 前提:IIS xx PowerShell Provider

    · 创建Web站点

      New-Item iis:\Sites\TestSite.bindings

      @{protocol="http";bindingInformation=".80:TestSite"} -physicalPath

      c:\test

    · 创建Web应用程序

      New-Item 'IIS:\Sites\Default Web Site\DemoApp'-physicalPath

      c:\test-type Application

    ·使用PowerShell管理IIS

    · 改变、查看站点和应用程序池状态

      Stop-WebItem, Start-WebItem、Get-WebItemState

    · 回收应用程序池

      - 请求默认页

      - 获取进程的ID(PID)

      - 回收应用程序池 

    相关文章

      网友评论

        本文标题:powershell读书笔记

        本文链接:https://www.haomeiwen.com/subject/bsdiyxtx.html