powershell读书笔记

·What is PowerShell?

图片发自简书App

  提供了命令行界面的互动式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 (导入)

图片发自简书App

=====以下来自网路博客为验证测试,估计现在不这样用了吧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)

  - 回收应用程序池 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容

  • 《ijs》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 5,027评论 0 7
  • 一、php可以做什么 php是一种可以在服务器端运行的编程语言,可以运行在Web服务器端。 php是一门后台编程语...
    空谷悠阅读 3,080评论 4 97
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,559评论 18 139
  • 一、数组 1、数组定义 数组就是一个键值对组成的语言结构,键类似于酒店的房间号,值类似于酒店房间里存储的东西。 $...
    空谷悠阅读 800评论 4 11
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,531评论 18 399