windows PowerShell 是windows平台下一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework 的强大功能。对比下vbs和批处理
简直是神级的脚本了~(尤其是可以使用Native commands, COM对象和.Net对象)
而且,随着.net core的出现,powershell 已经在linux和mac也可以用了。这个才是真的跨平台脚本shell语言啊
作为一门如此强大的脚本,肯定是有复杂性的。虽然如此,可以通过三个命令,来“自学”,它们就是Get-help, Get-command, Get-member (望文生义,语义比较强)以一个为例
PS C:UsersAdministrator> Get-Help Get-Process
名称
Get-Process
摘要
获取在本地计算机或远程计算机上运行的进程。
语法
Get-Process [[-Name] <string[]>] [-ComputerName <string[]>] [-FileVersionInfo] [-Module] [<CommonParameters>]
Get-Process -Id <Int32[]> [-ComputerName <string[]>] [-FileVersionInfo] [-Module] [<CommonParameters>]
Get-Process -InputObject <Process[]> [-ComputerName <string[]>] [-FileVersionInfo] [-Module] [<CommonParameters>]
说明
Get-Process cmdlet 获取本地或远程计算机上的进程。
如果没有参数,则 Get-Process 获取本地计算机上的所有进程。还可以通过进程名称或进程 ID (PID) 来指定特定进程,或将进程对象通过管道传送给 Get-Process。
默认情况下,Get-Process 将返回一个进程对象,该对象包含有关进程的详细信息并且支持允许您启动和停止进程的方法。还可以使用 Get-Process 的参数来获取进程中运行的程序的文件版本信息以及获取进程加载的模块。
相关链接
Online version: http://go.microsoft.com/fwlink/?LinkID=113324
Get-Process
Start-Process
Stop-Process
Wait-Process
Debug-Process
备注
若要查看示例,请键入: "get-help Get-Process -examples".
有关详细信息,请键入: "get-help Get-Process -detailed".
若要获取技术信息,请键入: "get-help Get-Process -full".
还可以带-examples参数来获取提供的例子
以上知道后,来写个PS脚本运行吧? 且慢传统的批处理、vbs脚本,写完后保存,直接双击就可以运行。如果是ps脚本,这样是行不通的。需要设置执行策略Set-ExecutionPolicy <执行策略>有四种策略:- Restricted——默认的设置, 不允许任何script运行- AllSigned——只能运行经过数字证书签名的script- RemoteSigned——运行本地的script不需要数字签名,但是运行从网络上下载的script就必须要有数字签名- Unrestricted——允许所有的script运行
入门级知识点有:1.Write-Host/Write-Debug ... 等等Write系列的2.Get-member/Get-Process/Get-Date3.变量的定义
PS C:UsersAdministrator> $a="i am ps"
PS C:UsersAdministrator> "$a"
i am ps
PS C:UsersAdministrator> '$a'
$a
单引号和双引号是有差别的
类型也可以强制声明PS C:UsersAdministrator> [int]$i=10
4.Where-Object
PS C:UsersAdministrator> $p = Get-Process | Where-Object {$_ -like "*qq*"}
PS C:UsersAdministrator> $p
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
1176 99 147560 90480 491 22.12 4348 QQ
305 36 11700 980 153 0.47 6232 QQPCNetFlow
323 49 21372 34836 160 4.54 4240 QQPCRealTimeSpeedup
696 61 30960 16036 265 7.08 972 QQPCRTP
1274 87 40860 13056 330 10.03 2724 QQPCTray
355 29 16820 6072 121 0.67 2660 QQProtect
4.函数的定义function TestFunc([string]$pa){#function body}函数的调用 TestFunc "test"5.Get-Process | Out-File -Append txt.txt或者 Get-Process >> txt.txt (使用重定向符)6. 其他好玩的比如一下(很像Python啊)
PS C:UsersAdministrator> 3*4*5
60
PS C:UsersAdministrator> [math]::pi
3.14159265358979
PS C:UsersAdministrator> "*"*10
**********