http://www.pstips.net/java
powershell版本shell
若是您的系統是window7或者Windows Server 2008,那麼PowerShell 2.0已經內置了,能夠升級爲3.0,4.0。
若是您的系統是Windows 8 或者Windows server 2012,那麼PowerShell 3.0已經內置了,能夠升級爲4.0。
若是您的系統爲Windows 8.1或者Windows server 2012 R2,那默認已是4.0了。windows
http://www.microsoft.com/en-us/download/details.aspx?id=40855 Windows Management Framework 4.0 數組
啓動 Windows PowerShell ISE Integrated Scripting Environment網絡
在 Windows Vista、Windows Server 2008 和更高版本的 Windows 中,在「開始」菜單中,依次單擊「開始」、「全部程序」、「附件」、「Windows PowerShell」文件夾和「Windows PowerShell ISE」項。
在 Windows XP 和 Windows Server 2003 中,若要啓動 Windows PowerShell,請在「開始」菜單中依次單擊「開始」、「程序」、「附件」、「Windows PowerShell」文件夾和「Windows PowerShell ISE」項。
在 Windows PowerShell 控制檯、Cmd.exe 或「運行」框中,鍵入「powershell_ise.exe」。ide
PowerShell中沒有文件的概念,只有項【Item】的概念,像Windows驅動器、目錄、文件、註冊表、變量等信息都被抽象成了"項"的概念,PowerShell使用"項"來進行統一管理。本次咱們只關注文件系統,即目錄、文件,其餘系統後續篇章再作了解。
關於文件系統的命令有以下一些:
New-Item
Copy-Item
Move-Item
Remove-Item
Rename-Item
Invoke-Item
固然,這些命令不只僅用於文件系統,像驅動器、註冊表等均可以使用,本次咱們只從文件系統的角度去關注這些命令。函數
執行powershell腳本
PowerShell[.exe] -Help | -? | /?
Restricted——默認的設置, 不容許任何script運行
AllSigned——只能運行通過數字證書籤名的script
RemoteSigned——運行本地的script不須要數字簽名,可是運行從網絡上下載的script就必需要有數字簽名
Unrestricted——容許全部的script運行
windows默認不容許任何腳本運行,你可使用"Set-ExecutionPolicy"cmdlet來改變的你PowerShell環境。例如,你可使用以下命令讓PowerShell運行在無限制的環境之下:
PS C:\Users\flt\ps> Set-ExecutionPolicy Unrestricted
Set-ExecutionPolicy : 對註冊表項「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell」的訪問被拒絕。 要更改默認(LocalMachine)做用
域的執行策略,請使用「以管理員身份運行」選項啓動 Windows PowerShell。要更改當前用戶的執行策略,請運行 "Set-ExecutionPolicy -Scope CurrentUser"。
PS C:\Users\flt> Set-ExecutionPolicy Unrestricted -Scope CurrentUser
或者輸入如下命令:runas /noprofile /user:Administrator cmd
可是個人管理員帳號沒有密碼,沒法切換到administrator權限,顯示沒法啓動服務。
看來這種經過的方法對於沒有設置管理員密碼的電腦仍是有點問題。
使用java調用powershell腳本,可使用如下命令:
String cmd = "cmd /c powershell -ExecutionPolicy RemoteSigned -noprofile -noninteractive -file \""
+ scriptFilename + "\"";
一.最一般的運行腳本的方法是調用它:
PS C:\> & "C:\Belfry\My first Script.ps1"
注意: 這裏的"&"操做符能容許你調用一個命令, 腳本, 或函數. 好比:
若是路徑不包含任何的空格, 那麼你就能夠忽略引號和'&'操做符.
PS C:\> C:\Belfry\Myscript.ps1
若是腳本就在當前路徑下, 你必須使用符號".\"來告訴PowerShell該腳本就在當前路徑下.
PS C:\> .\Myscript.ps1
二.Dot Sourcing
當使用上面的語法執行腳本的時候, 腳本中定義的變量和函數會在腳本運行結束後消失。若是你使用dot sourcing來運行腳本的時候, 全部腳本中定義的變量和函數會在腳本運行結束後依然存在。
舉例運行dot-sourcing腳本.
PS C:\> . "C:\Belfry\My first Script.ps1"
PS C:\> . .\Myscript.ps1"ui
====================spa
cmdlets是Powershell的內部命令,cmdlet的類型名爲System.Management.Automation.CmdletInfo,包含下列屬性和方法:.net
dir alias: | where {$_.Definition.Startswith("Remove")}
dir alias:獲取的是別名的數組,經過where對數組元素進行遍歷,$_表明當前元素,alias的Definition爲String類型,由於powershell支持.net,.net中的string類有一個方法Startswith。經過where過濾集合在powershell中使用很是普遍。
====================
Powershell對象=屬性+方法
在現實世界中,你可能已經瞭解對象就是那些可以摸到的東西。Powershell中的對象和現實生活很類似。例如要在現實生活中描述一把小刀。咱們可能會分兩方面描述它
屬性:一把小刀擁有一些特殊的屬性,好比它的顏色、製造商、大小、刀片數。這個對象是紅色的,重55克,有3個刀片,ABC公司生產的。所以屬性描述了一個對象是什麼。
方法:可使用這個對象作什麼,好比切東西、當螺絲釘用、開啤酒蓋。一個對象能幹什麼就屬於這個對象的方法。
按Insert鍵設置命令行編輯模式爲改寫模式, 再按一次Insert鍵命令行返回插入模式. 當命令行處於改寫模式, 你輸入字符將會替代被光標高亮顯示的字符. 當命令行處於插入模式(默認狀態), 字符被插入到光標字符以前.
按Backspace鍵刪除光標前一個字符(改寫或插入模式). 改寫模式中, 按Delete鍵刪除高亮字符. 在插入模式, 按Delete鍵刪除下一個字符.
按Tab鍵自動補全你輸入的路徑. 若是第一個現實的路徑不是你期待的, 再一次按Tab知道正確的路徑出現. 注意Tab鍵補全的路徑只能是當前子目錄中. 例如, 若是你輸入了c:\ 而後按Tab鍵, 可選路徑之一將會是c:\windows, 而不是c:\windows\system32. 要進入結構中的下個層次(譯者注: 文件系統中就是子目錄), 在選擇的父目錄後輸入反斜槓, 而後按Tab鍵. 例如, 若是你一直按Tab直到看見c:\windows, 你能夠在行尾輸入一個反斜線, 而後繼續按Tab鍵來遍歷結構中的下一層.
今天爲你們總結了在控制檯的全部快捷鍵, 方便你們使用PowerShell. 實際上Cmd.exe或任何控制檯都支持這些快捷鍵的.
按鍵 |
功能 |
← |
光標向左移動一個字符 |
Ctrl + ← |
光標向左移動一個單詞 |
→ |
光標向右移動一個字符 |
Ctrl + → |
光標向右移動一個單詞 |
Home鍵 |
光標移動到行首 |
End鍵 |
光標移動到行尾 |
Delete鍵 |
刪除光標指向的字符 |
Backspace鍵或Ctrl + H |
刪除光標左邊第一個字符 |
Ctrl + End鍵 |
刪除從光標到行尾的全部字符 |
Esc鍵 |
清除當前輸入的全部字符 |
Insert鍵 |
插入與改寫模式切換 |
Tab鍵 |
Tab鍵自動完成命令,例如:自動完成命令的名稱、cmdlet命令的參數、路徑。若是第一個提示的對象不是您指望的結果,繼續輸入Tab鍵,將會自動顯示下一個候選對象。 |
↑ |
向上查詢歷史命令 |
↓ |
向下查詢歷史命令 |
F7鍵 |
顯示命令歷史記錄,以圖形列表窗的形式給出全部曾經輸入的命令,並可用上下箭頭鍵選擇再次執行該命令。 |
F8鍵 |
搜索命令對應的歷史記錄,在命令上輸入命令的一部份內容後,按F8鍵,能夠獲得匹配該輸入的歷史命令。若是有多個匹配項,重複按F8,能夠循環顯示全部曾經輸入的命令。若是命令行爲空,則默認匹配全部歷史輸入的命令。 |
F9鍵 |
按編號選擇歷史命令,以圖形對話框方式要求您輸入命令所對應的編號(從0開始),並將該命令顯示在屏幕上。 |
Enter鍵或Ctrl + M |
回車(Enter) |
Ctrl + C |
終止當前執行的命令 |
Ctrl + Break |
終止當前執行的命令 |
Alt + F7鍵 |
清除全部曾經輸入的命令歷史記錄 |
Powershell把全部環境變量的記錄保存在env: 虛擬驅動中,所以能夠列出全部環境變量 。一旦查出環境變量的名字就可使用$env:name 訪問了。 PS C:\Users\flt\ps> ls env: Name Value ---- ----- ALLUSERSPROFILE C:\ProgramData APPDATA C:\Users\flt\AppData\Roaming CommonProgramFiles C:\Program Files\Common Files CommonProgramFiles(x86) C:\Program Files (x86)\Common Files CommonProgramW6432 C:\Program Files\Common Files COMPUTERNAME FLT-NB ComSpec C:\Windows\system32\cmd.exe PS C:\Users\flt\ps> $env:APPDATA C:\Users\flt\AppData\Roaming
PS C:\Users\flt\ps> dir a.ps|Format-List *
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Users\flt\ps\a.ps
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Users\flt\ps
PSChildName : a.ps
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
VersionInfo : File: C:\Users\flt\ps\a.ps
InternalName:
OriginalFilename:
FileVersion:
FileDescription:
PS C:\Users\flt\ps> Get-Variable Name Value ---- ----- $ * ? True ^ Get-Variable args {} ConfirmPreference High PS C:\Users\flt\ps> Get-Variable|fl *|more Name : $ Description : Value : more Visibility : Public Module : ModuleName : Options : None Attributes : {} Value : False Name : ? Description : 上一命令的狀態 Visibility : Public Module : ModuleName : Options : ReadOnly, AllScope Attributes : {}
cmd控制檯與ps控制檯 Microsoft Windows [版本 6.1.7601] 版權全部 (c) 2009 Microsoft Corporation。保留全部權利。 C:\Users\flt>powershell Windows PowerShell 版權全部 (C) 2009 Microsoft Corporation。保留全部權利。 PS C:\Users\flt> 例如經過ls獲取當前目錄的全部文件信息,而後經過Sort -Descending對文件信息按照Name降序排列,最後將排序好的文件的Name和Mode格式化成Table輸出。 PS C:\Users\flt> ls | sort -Descending Name | Format-Table Name,Mode Name Mode ---- ---- Videos d-r-- Searches d-r-- Saved Games d-r-- Roaming d---- Desktop d-r-- Contacts d-r-- .vmrc_plugin_ovftool_settings.js -a--- 重定向 把命令的輸出保存到文件中,‘>’爲覆蓋,’>>’追加。 PS C:\Users\flt\ps> "poweersheel" > a.txt PS C:\Users\flt\ps> cat .\a.txt poweersheel PS C:\Users\flt\ps> "poweersheel" >>a.txt PS C:\Users\flt\ps> cat a.txt poweersheel poweersheel 咱們能夠把powershell當成一個計算器。象鍵入命令行那樣輸入數學表達式,回車,powershell會自動計算並把結果輸出。經常使用的加減乘除模(+,-,*,/,%)運算和小括號表達式都支持。 PS C:\Users\flt> 1+2+3 6 PS C:\Users\flt> 2/2 1 PS C:\Users\flt> 6/3 2 PS C:\Users\flt> 2*4 8 PS C:\Users\flt> 3%2 1 PS C:\Users\flt> 9%6 3 1gb/20mb*10kb 80kb*800*30/1gb 10GB/(80KB*5)/30 Microsoft Windows [版本 6.1.7601] 版權全部 (c) 2009 Microsoft Corporation。保留全部權利。 C:\Users\flt>powershell Windows PowerShell 版權全部 (C) 2013 Microsoft Corporation。保留全部權利。 先看看$psversiontable,這個變量拆開來看就是ps-version-table,表示PowerShell中各組件的版本號列表。其中表示PowerShell本身的版本號(PSVersion),也包括.NET的版本號(CLRVersion),還有Windows版本號(BuildVersion) PS C:\Users\flt> $psversiontable Name Value ---- ----- PSVersion 4.0 WSManStackVersion 3.0 SerializationVersion 1.1.0.1 CLRVersion 4.0.30319.18408 BuildVersion 6.3.9600.16406 PSCompatibleVersions {1.0, 2.0, 3.0, 4.0} PSRemotingProtocolVersion 2.2 接下來看看$host變量,裏面一個Version,表示PowerShell的版本號。 PS C:\Users\flt> $host Name : ConsoleHost Version : 4.0 InstanceId : ec93e349-4833-4185-8f3d-8d365af04d70 UI : System.Management.Automation.Internal.Host.InternalHostUserInterface CurrentCulture : zh-CN CurrentUICulture : zh-CN PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy IsRunspacePushed : False Runspace : System.Management.Automation.Runspaces.LocalRunspacePS C:\Users\flt> Get-HostName : ConsoleHostVersion : 4.0InstanceId : ec93e349-4833-4185-8f3d-8d365af04d70UI : System.Management.Automation.Internal.Host.InternalHostUserInterfaceCurrentCulture : zh-CNCurrentUICulture : zh-CNPrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxyIsRunspacePushed : FalseRunspace : System.Management.Automation.Runspaces.LocalRunspacePS C:\Users\flt> Get-Host|Select-Object NameName----ConsoleHost