powershell

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 
相關文章
相關標籤/搜索