Windows Powershell 3 极速入门
Learn Windows PowerShell 3 in a Month of Lunches(2rd) 2013, DON JONES
这本书基于 PowerShell 3.0,做初学者教材甚好,若有 Linux shell 基础则可一目十行。如下便是摘录式笔记,仅记录一些感兴趣的重点,涉及大部分章节。
书中很少涉及语法,因为按作者的说法:操起命令直接上,这才是 PS 的主要使用模式(PowerShell-ish ways),而非一般的脚本编程,流控之类的语法都只是命令的粘合剂。
读完一遍,对 PS 突出印象:
现代化的、风格一致的设计
应该借鉴了 Linux shell、python、C# 等;一致性降低了学习使用成本
面向对象、基于 .NET 框架
一切皆对象,,消除了无结构文本的弊端;可以直接使用 .NET 对象,功能真强
命令式
开发迭代模型:run—result—modify—retry
PowerShell 包含两个组件:
PS console
轻快,不支持双字节字符集,无补全
PS ISE (integrated scripting environment)
基于 WPF,支持中文,强大的帮助与补全
查看版本号: $PSVersionTable
ch3. Using the help system(帮助系统)媲美 GUI 的 CLI 帮助系统:能迅速找到命令并了解其用法(支持通配符)
Get-Command 查找匹配的命令
Get-Help 查看命令用法
Get-Member 查看对象的类型和成员
Help 是 function,相当于 Get-Help | More
查看示例:Help Get-EventLog -example
详细信息:Help -full
Show-command 带 GUI 帮助的填写
4 种命令 Command:cmdlet(命名约定 verbs+nouns),function,workflow,externApp。例: Get-Service -name e,s*
帮助系统先升级:update-help(-Source 可指定本地更新源)
多个参数搭配路径
cmdlet:原生命令,为 .Net 语言编写
可选 optional 参数整个在方括号里 [-ComputerName <string[]>],这里的数组用逗号分隔的列表表示;用参数缩写时能唯一标识即可,如 -comp
否则为强制 mandatory 参数,[-LogName] <string>
若参数名称也在方括号里,则为位置 positional 参数
externApp(外部命令,但应优先用 cmdlet)
$exe = “C:\mount.exe”
$host = “srv”
$user = “nick”
& $exe -h $host -u $user
新写法:-- C:\mount.exe -h srv -u nick,会直接传给 cmd,不解析
PSProvider 适配器,以类文件系统的方式,来导航与管理数据存储(动态结构),如注册表。查看可用:Get-PSProvider
相关 cmdlet 的 noun 常带 “Item”(指单独对象,如文件)
ItemProperty 表示 item 属性,如只读,一般都有 -Path 属性,支持通配符;ChildItem 指子对象
两种:module 和 snap-in(dll+xml)
get-pssnapin -registered 注册
add-pssnapin sqlservercmdletsnapin100,sqlserverprovidersnapin100
Get-Command -pssnapin sqlservercmdletsnapin100
module 不用注册,根据 $PSModulePath 自动发现,按需加载
get-command -Module DnsClient
有些特定的管理 shell 其实是带参数启动 powershell.exe -noexit -command import-module ActiveDirectory
ch8. Objects: data by another name(对象)查看:get-process | get-member
a collection of objects as a big in-memory table of information, with propertiesas the columns and individual objects the rows.PS 对象一般来自 .net 框架,但 ETS(Extensible Type System)会添加些额外属性(ScriptProperty,NoteProperty,AliasProperty)以利使用。
对象的 property 用的很多,但 action/method 很少用,因为通常由 cmdlet 实现
Get-Process | Sort-Object VM,ID -desc
Get-Process | Select-Object Name,ID,VM,PM
Select-Objectis 用来选择或新建 properties(会产生新对象), 以及特定行,-expandProperty 可以获取值列表. 而 Where-Object 根据指定条件删除或过滤 pipeline 里的 objects。
pipeline 的每一步都可能产生不同对象,所以要用 gm 来确定
Pipeline parameter binding:
Try1. ByValue:把输入与参数类型进行匹配;参数需支持pipelineInputByValue(可通过 Help -full 查看);仅能匹配一个参数(能否手动指定?)
Try2. ByPropertyName:仅名字匹配;需支持pipInByPropertyName;多参数匹配
圆括号命令用法:
Get-WmiObject -class Win32_BIOS -ComputerName (Get-Content .\comput
ers.txt)
Filter left (命令需支持 -filter 参数)
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68462.html