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
**********