Powershell笔记之MVA课程

很早之前看过MVA的Powershell课程,最近准备回顾一下,还是有一些意外的收获。

<<快速入门 : PowerShell 3.0 高级工具和脚本>>

1. Invoke-Item(简写成ii):在命令行状态下,你想打开资源管理器是不是觉得很不方便?用这个命令就能实现快速打开当前路径的资源管理器。

2. ${var name}: 居然支持带有空格的变量名!

3. [int]$x = 1: 强制声明变量的类型。

4. [Validateset](1, 'abc', 3): 限定变量的内容。

5. `: 转义符

6. 子表达式:在$()中的内容会被当作普通的Powershell命令来执行

$p1 = Get-Process lsass
Write-Host "PID1=$p1.id"
# PID=System.Diagnostics.Process (lsass).id;一开始看有点迷糊,分解成如下形式就明了了;另外从ISE终端的颜色也可以分辨出不同
Write-Host "PID1=" $p1 ".id"
"--分割线--"
$p2 = Get-Process lsass
Write-Host "PID2=$($p2.Id)"
# PID=712;一开始看有点迷糊,分解成如下形式就明了了
$pid2=$p2.id
Write-Host "PID2=$pid2"

7. 1..4: 范围运算符

8. [CmdletBinding()]: 详见http://windowsitpro.com/blog/what-does-powershells-cmdletbinding-do

9. Get-Service -OutVariable var

10. Get-Service [[-Name] <String[]>]: 帮助文件中的<String[]>表示允许接受多个由逗号分隔的值;若没有[],则表示只能接受一个值

11. 定义数组、哈希表这类对象时,你会发现若一行一元素时,元素间的逗号或分号可有可无。原因是“Powershell中回车符也是语句结束符,可以替代分号逗号”

12. $ht = [ordered]@{ }

13. 哈希表转换成真正的对象:$obj= New-Object -TypeName PSObject -Property $ht

14. XXX | clip

15. help about_Functions_Advanced_Parameters

16. $var.pstypenames

 

<<快速入门 : PowerShell 3.0>>

1. 大部分Cmdlet的帮助文件里都有一个参数-InputObject,但是似乎从没见过有脚本用到这个参数。这个参数应该这么用,Start-Service -InputObject (Get-Service -Name BITS),难怪不常见了,因为一般都会写成Get-Service -Name BITS | Start-Service

2. Get-ADComputer -Filter * | Get-WMIObject -Class Win32_BIOS -Computername { $_.Name }:如果将一个Script Block作为参数,那么可以像ForEach语句中调用$_一样来操作。

3. Get-WmiObject -Class Win32_BIOS -ComputerName (Get-Content .\computer.txt)一开始看这样写有点糊涂,但是化解成Get-WmiObject -Class Win32_BIOS -ComputerName ‘server1’, 'server2'就不难理解了,因为-ComputerName允许的参数类型是String[](多个)

 

<<Learn Windows PowerShell in A Month of lunches>>

1. Select-Object中所使用的哈希表只接受Name和Expression,而Format-Table比它多三个,分别为Width,Alignment,FormatString

2. 和Select-Object不同,Format-XXX会改变结果的TypeName

3. 一串命令的输出结果可以同时包含多种类型的对象,最好的例子就是Get-ChildItem,既有DirectoryInfo,又有FileInfo

4. Invoke-Command -ComputerName chn-dochen2 -ScriptBlock {Get-Service -Name BITS} | Get-Member,这里会得到一个叫做Deserialized(译:反序列化).System.ServiceProcess.ServiceController的反序列化对象类型

5. Get-CimClass等价于Get-WmiObject -List,可以罗列出Namespace中的所有Class(类),最常见的Namespace就是root\cimv2了

6. 位置参数:即帮助文件中的Position: N

posted @ 2017-02-28 10:08  dongdonggeorge  阅读(324)  评论(0编辑  收藏  举报