xxxxxx、先生の言葉小银的hacker娱乐圈

powershell读书笔记

2017-10-11  本文已影响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)

  - 回收应用程序池 

上一篇下一篇

猜你喜欢

热点阅读