




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
HYPERLINK"http://www。mossfl/powershell-define-variable.html”\o”Powershell定義變量”Powershell定義變量
HYPERLINK”http://www。mossfly.com/category/programming/powershell"\o"查看Powershell中的全部文章"Powershell,HYPERLINK"http://www。mossfly.com/cat(yī)egory/programming"\o”查看程序設計中的全部文章”程序設計
HYPERLINK"http://www。mossfly。com/powershell-define—variable。html”幫助0102030405060708091011#定義變量$a=10$b=4#計算變量$result=$a*$b
$msg="保存文本"
#輸出變量$result$msg40?保存文本powershell不需要顯示地去聲明,可以自動創(chuàng)建變量,只須記住變量的前綴為$。
創(chuàng)建好了變量后,可以通過變量名輸出變量,也可以把變量名存在字符串中。但是有個例外單引號中的字符串不會識別和處理變量名。選擇變量名在powershell中變量名均是以美元符”$"開始,剩余字符可以是數(shù)字、字母、下劃線的任意字符,并且powershell變量名大小寫不敏感($a和$A是同一個變量).
某些特殊的字符在powershell中有特殊的用途,一般不推薦使用這些字符作為變量名.當然你硬要使用,請把整個變量名后綴用花括號括起來。賦值和返回值賦值操作符為“=”,幾乎可以把任何數(shù)據(jù)賦值給一個變量,甚至一條cmdlet命令?,為什么,因為Powershell支持對象,對象可以包羅萬象。給多個變量同時賦值賦值操作符不僅能給一個變量賦值,還可以同時給多個變量賦相同的值。交換變量的值要交換兩個變量的值,傳統(tǒng)的程序語言至少需要三步,并且還需定義一個中間臨時變量。在powershell中,交換兩個變量的值,這個功能變得非常簡單。查看正在使用的變量Powershell將變量的相關信息的記錄存放在名為variable:的驅動中.如果要查看所有定義的變量,可以直接遍歷variable:查找變量因為有虛擬驅動variable:的存在,可以象查找文件那樣使用通配符查找變量。例如要查詢以value打頭的變量名.驗證變量是否存在驗證一個變量是否存在,仍然可以象驗證文件系統(tǒng)那樣,使用cmdletTest-Path.為什么?因為變量存在變量驅動器中。刪除變量因為變量會在powershell退出或關閉時,自動清除.一般沒必要刪除,但是你非得刪除,也可以象刪除文件那樣刪除它。使用專用的變量命令為了管理變量,powershell提供了五個專門管理變量的命令Clear-Variable,Get—Variable,New—Variable,Remove—Variable,Set—Variable。因為虛擬驅動器variable:的存在,clear,remove,set打頭的命令可以被代替。但是Get—Variable,New—Variable。卻非常有用new—variable可以在定義變量時,指定變量的一些其它屬性,比如訪問權限。同樣Get—Variable也可以獲取這些附加信息.變量寫保護可以使用New-Variable的option選項在創(chuàng)建變量時,給變量加上只讀屬性,這樣就不能給變量重新賦值了。但是可以通過刪除變量,再重新創(chuàng)建變量更新變量內容。有沒有權限更高的變量,有,那就是:選項Constant,常量一旦聲明,不可修改變量描述在New—Variable可以通過—description添加變量描述,但是變量描述默認不會顯示,可以通過Format—List查看.HYPERLINK"http://www。moss/powershell—automatic-variables。html"\o"Powershell自動化變量"Powershell自動化變量
HYPERLINK”http://www。mossfly。com/category/programming/powershell"\o”查看Powershell中的全部文章”Powershell,HYPERLINK"http://www。mossf/category/programming”\o"查看程序設計中的全部文章”程序設計
HYPERLINK"http://www。mossfly.com/powershell-automatic-variables.html”\l"respond"添加評論十二072011
Powershell自動化變量是那些一旦打開Powershell就會自動加載的變量。?這些變量一般存放的內容包括?用戶信息:例如用戶的根目錄$home
配置信息:例如powershell控制臺的大小,顏色,背景等。?運行時信息:例如一個函數(shù)由誰調用,一個腳本運行的目錄等。powershell中的某些自動化變量只能讀,不能寫。例如:$Pid。
可以通過Get—Helpabout_Automatic_variables查看Automatic_variables的幫助。
TOPIC
about_Automatic_Variables主題?about_Automatic_Variables簡短說明
說明存儲WindowsPowerShell狀態(tài)信息的變量。
這些變量由WindowsPowerShell創(chuàng)建并維護。詳細說明
下面是WindowsPowerShell中的自動變量的列表:$$
包含會話所收到的最后一行中的最后一個令牌.$??包含最后一個操作的執(zhí)行狀態(tài)。如果最后一個操作成功,則包含TRUE,失敗則包含FALSE。$^
包含會話所收到的最后一行中的第一個令牌。$_
包含管道對象中的當前對象。在對管道中的每個對象或所選對象執(zhí)行操作的命令中,可以使用此變量.$Args
包含由未聲明參數(shù)和/或傳遞給函數(shù)、腳本或腳本塊的參數(shù)值組成的數(shù)組.?在創(chuàng)建函數(shù)時可以聲明參數(shù),方法是使用param關鍵字或在函數(shù)名稱后添加以圓括號括起、逗號
分隔的參數(shù)列表。$ConsoleFileName?包含在會話中最近使用的控制臺文件(。psc1)的路徑.在通過PSConsoleFile參數(shù)啟動?WindowsPowerShell或使用Export-Consolecmdlet將管理單元名稱導出到控制臺文件?時,將填充此變量。在使用不帶參數(shù)的Export—Consolecmdlet時,它自動更新在會話中最近使用的控制臺文件.?可以使用此自動變量確定要更新的文件。$Error?包含錯誤對象的數(shù)組,這些對象表示最近的一些錯誤。最近的錯誤是該數(shù)組中的第一個錯誤對象?($Error[0])。$Event?包含一個PSEventArgs對象,該對象表示一個正在被處理的事件。
此變量只在事件注冊命令(例如Register-ObjectEvent)的Action塊內填充。
此變量的值是Get-Eventcmdlet返回的同一個對象。
因此,可以在Action腳本塊中使用$Event變量的屬性(例如
$Event.TimeGenerated)。$EventSubscriber
包含一個PSEventSubscriber對象,該對象表示正在被處理的事件的事件訂閱者。
此變量只在事件注冊命令的Action塊內填充。此變量的值?是Get—EventSubscribercmdlet返回的同一個對象。$ExecutionContext
包含一個EngineIntrinsics對象,該對象表示W(wǎng)indowsPowerShell主機的執(zhí)行上下文。?可以使用此變量來查找可用于cmdlet的執(zhí)行對象。$False?包含F(xiàn)ALSE。可以使用此變量在命令和腳本中表示FALSE,而不是使用字符串”false”。如果
該字符串轉換為非空字符串或非零整數(shù),則可將該字符串解釋為TRUE。$ForEach
包含F(xiàn)orEach-Object循環(huán)的枚舉數(shù)。可以對$ForEach變量的值使用枚舉數(shù)的屬性和方法.
此變量僅在運行For循環(huán)時存在,循環(huán)完成即會刪除。$Home
包含用戶的主目錄的完整路徑。此變量等效于%homedrive%%homepath%環(huán)境變量。$Host?包含一個對象,該對象表示W(wǎng)indowsPowerShell的當前主機應用程序。可以使用此變量在命?令中表示當前主機,或者顯示或更改主機的屬性,如$Host。version、$Host.CurrentCulture
或$host.ui。rawui.setbackgroundcolor(“Red”)。$Input
一個枚舉數(shù),它包含傳遞給函數(shù)的輸入。$Input變量區(qū)分大小寫,只能用于函數(shù)和腳本塊。(腳
本塊本質上是未命名的函數(shù).)在函數(shù)的Process塊中,$Input變量包含當前位于管道中的對?象.在Process塊完成后,$Input的值為NULL。如果函數(shù)沒有Process塊,則$Input?的值可用于End塊,它包含函數(shù)的所有輸入。$LastExitCode?包含運行的最后一個基于Windows的程序的退出代碼。$Matches?$Mat(yī)ches變量與-match和—notmat(yī)ch運算符一起使用。?將標量輸入提交給-match或—notmatch運算符時,如果檢測到匹配,則會返回一個布爾值,?并使用由所有匹配字符串值組成的哈希表填充$Matches自動變量。有關—match運算符的詳細
信息,請參閱about_comparison_operators。$MyInvocat(yī)ion
包含一個對象,該對象具有有關當前命令(如腳本、函數(shù)或腳本塊)的信息。可以使用該對象中的?信息(如腳本的路徑和文件名($myinvocation.mycommand.path)或函數(shù)的名稱
($myinvocation.mycomman))來標識當前命令。對于查找正在運行的腳本的名稱,這非常有用。$NestedPromptLevel
包含當前提示級別。值0指示原始提示級別。該值在進入嵌套級別時遞增,在退出嵌套級別時遞減。例如,在使用$Host.EnterNestedPrompt方法時,WindowsPowerShell會出現(xiàn)嵌套命令
提示符.在WindowsPowerShell調試程序中到達斷點時,WindowsPowerShell也會出現(xiàn)嵌?套命令提示符.在進入嵌套提示時,WindowsPowerShell暫停當前命令,保存執(zhí)行上下文,并遞增
$NestedPromptLevel變量的值。要創(chuàng)建更多嵌套命令提示符(最多128級)或返回到原始命
令提示符,請完成命令,或鍵入”exit”.$NestedPromptLevel變量有助于跟蹤提示級別。可以創(chuàng)建包含此值的備用Windows?PowerShell命令提示符,以使此值始終可見。$NULL?包含NULL或空值。可以在命令和腳本中使用此變量表示NULL,而不是使用字符串”NULL"。?如果該字符串轉換為非空字符串或非零整數(shù),則可將該字符串解釋為TRUE.$PID
包含承載當前WindowsPowerShell會話的進程的進程標識符(PID)。$Profile?包含當前用戶和當前主機應用程序的WindowsPowerShell配置文件的完整路徑。可以在命令?中使用此變量表示配置文件。例如,可以在命令中使用此變量確定是否已創(chuàng)建某個配置文件:test-path$profile也可以在命令中使用此變量創(chuàng)建配置文件:new-item—typefile-path$pshome—force此外,還可以在命令中使用此變量在記事本中打開配置文件:notepad$profile$PSBoundParameters?包含活動參數(shù)及其當前值的字典.只有在聲明參數(shù)的作用域(如腳本或函數(shù))中,
此變量才有值。可以使用此變量顯示或更改參數(shù)的當前值,也可以將參數(shù)值傳遞給
其他腳本或函數(shù)。例如:functiontest{?param($a,$b)#Displaytheparametersindictionaryformat(yī)。?$psboundparameters#CalltheTest1functionwith$aand$b.
test1@psboundparameters?}$PsCmdlet
包含一個對象,該對象表示正在運行的cmdlet或高級函數(shù)。可以在cmdlet或函數(shù)代碼中使用該對象的屬性和方法來響應使用的條件.例如,
ParameterSetName屬性包含正在使用的參數(shù)集的名稱,而ShouldProcess方法將WhatIf
和Confirm參數(shù)動態(tài)添加到cmdlet.有關$PSCmdlet自動變量的詳細信息,請參閱about_Functions_Advanced.$PsCulture?包含操作系統(tǒng)中當前所用的區(qū)域性的名稱。區(qū)域性確定數(shù)字、貨幣和日期等項的顯示格式.這是系?統(tǒng)的System.Globalization。CultureInfo。CurrentCulture.Name屬性的值。要獲取系統(tǒng)
的System。Globalization.CultureInfo對象,請使用Get—Culturecmdlet。$PSDebugContext?在調試期間,此變量包含有關調試環(huán)境的信息.在其他時間,此變量包含NULL值.因此,可以使?用此變量指示調試程序是否擁有控制權。填充之后,此變量包含一個具有Breakpoints和?InvocationInfo屬性的PsDebugContext對象。InvocationInfo屬性有多個十分有用的
屬性,包括Location屬性。Location屬性指示正在調試的腳本的路徑。$PsHome
包含WindowsPowerShell的安裝目錄的完整路徑(通常為?%windir%\System32\WindowsPowerShell\v1。0)。可以在WindowsPowerShell文件?的路徑中使用此變量。例如,下面的命令在概念性幫助主題中搜索”variable”一詞:select-string—patternvariable—path$pshome\*.txt$PSScriptRoot
包含要從中執(zhí)行腳本模塊的目錄.
通過此變量,腳本可以使用模塊路徑來訪問其他資源。$PsUICulture
包含操作系統(tǒng)中當前所用的用戶界面(UI)區(qū)域性的名稱。UI區(qū)域性確定哪些文本字符串用于用戶?界面元素(如菜單和消息)。這是系統(tǒng)的?System。Globalization.CultureInfo.CurrentUICulture。Name屬性的值。要獲取系統(tǒng)
的System。Globalization。CultureInfo對象,請使用Get-UICulturecmdlet。$PsVersionTable?包含一個只讀哈希表,該哈希表顯示有關在當前會話中運行的WindowsPowerShell版本的詳?細信息.
該表包括下列項:CLRVersion:公共語言運行時(CLR)的版本BuildVersion:當前版本的內部版本號PSVersion:WindowsPowerShell版本號WSManStackVersion:WS—Management堆棧的版本號PSCompatibleVersions:與當前版本兼容的WindowsPowerShell版本SerializationVersion序列化方法的版本PSRemotingProtocolVersion
WindowsPowerShell遠程管理協(xié)議的版本$Pwd
包含一個路徑對象,該對象表示當前目錄的完整路徑.$Sender?包含生成此事件的對象。此變量只在事件注冊命令的Action塊內填充。?此變量的值也可在Get—Event返回的PSEventArgs?(System。Management.Automat(yī)ion.PSEventArgs)對象的Sender屬性中找到.$ShellID?包含當前shell的標識符。$SourceArgs?包含表示正在被處理的事件的事件參數(shù)的對象。此變量只在事件注冊命令的Action?塊內填充。此變量的值也可在Get—Event返回的PSEventArgs?(System.Management.Automation。PSEventArgs)對象的SourceArgs屬性中找到。$SourceEventArgs?包含一個對象,該對象表示從正在被處理的事件的EventArgs中派生出的?第一個事件參數(shù)。此變量只在事件注冊命令的Action塊內填充。
此變量的值也可在Get-Event返回的PSEventArgs
(System.Management.Automation。PSEventArgs)對象的SourceArgs屬性中找到。$This?在定義腳本屬性或腳本方法的腳本塊中,$This變量引用要擴展的對象。$True
包含TRUE。可以在命令和腳本中使用此變量表示TRUE。另請參閱?about_Hash_Tables?about_Preference_Variables
about_Variables\o”Powershell通過函數(shù)擴展別名”Powershell通過函數(shù)擴展別名
HYPERLINK”http://www.mossfly。com/category/programming/powershell"\o"查看Powershell中的全部文章”Powershell,HYPERLINK”http://www.mossfly.com/category/programming"\o”查看程序設計中的全部文章"程序設計
HYPERLINK"http://www.mossfl/powershell—extend—alias—by—function。html"添加評論十一252011
在Powershell中設置別名的確方便快捷,但是在設置別名的過程中并設置參數(shù)的相關信息。盡管別名會自動識別參數(shù),但是如何把經(jīng)常使用的參數(shù)默認設定在別名里面呢?例如Test-Connection-Count2-ComputerName,讓-"-Count2″固化在別名中。?這時簡單的別名無法完成上述需求,可以通過函數(shù)來完成它,并且一旦把函數(shù)拉過來,定義別名會變得更加靈活。有了函數(shù)牽線,別名可以完成更高級更強大的功能,其中$args為參數(shù)的占位符,經(jīng)測試,發(fā)現(xiàn)這個占位符必須以$args命名,否則不能識別,會拋出異常:?Cannotvalidat(yī)eargumentonparameter‘ComputerName’。Theargumentisnullorempty。Supplyanarg?ntthatisnotnulloremptyandthentrythecommandagain.HYPERLINK"http://www.mossfly.com/powershell—quickedit—mode-and-stand—ard-mode。html"\o”Powershell快速編輯模式和標準模式”Powershell快速編輯模式和標準模式
HYPERLINK”http://www.mossfly。com/category/programming/powershell”\o"查看Powershell中的全部文章"Powershell,HYPERLINK”http://www。mo/category/programming"\o”查看程序設計中的全部文章”程序設計
HYPERLINK”http://www.mossfly.com/powershell-quickedit—mode-and-stand-ard-mode。html”\o”查看Powershell中的全部文章"Powershell,HYPERLINK”http://www。mossfly。com/category/programming”\o”查看程序設計中的全部文章”程序設計
HYPERLINK"http://www.mossfly.com/powershell-customize—the—console。html"\l”respond”添加評論十一232011
右擊標題欄選擇"屬性”彈出powershell控制臺對話框。
在這里有三個四個選項卡:選項、字體、布局和顏色。
“選項”設置光標,歷史記錄,編輯模式的切換。“字體”設置字體的名稱和大小“布局”設置窗口的緩沖區(qū)、窗口的大小、窗口起始坐標“顏色”設置屏幕和對話框的背景色和前景色.HYPERLINK"http://www。mossfly.com/powershell—foreach-loop。html"\o”PowershellForeach循環(huán)”PowershellForeach循環(huán)
HYPERLINK"http://www.mossfly.com/category/programming/powershell”\o"查看Powershell中的全部文章"Powershell,HYPERLINK"http://www.mossf/category/programming"\o”查看程序設計中的全部文章”程序設計
HYPERLINK"http://www。mossfly。com/powershell-foreach-loop。html"\o”查看Powershell中的全部文章"Powershell,HYPERLINK”http://www.mossfly。com/category/programming"\o"查看程序設計中的全部文章"程序設計
HYPERLINK”http://www.mossfly.com/powershell—formulating-conditions。html"\l”respond”添加評論一162012
Powershell中的比較運算符
-eq:等于
-ne:不等于?—gt:大于
—ge:大于等于?-lt:小于
—le:小于等于
-contains:包含?-notcontains:不包含進行比較可以將比較表達式直接輸入進Powershell控制臺,然后回車,會自動比較并把比較結果返回。求反求反運算符為—not但是像高級語言一樣”!“也支持求反.布爾運算-and:和?—or:或
—xor:異或
—not:逆比較數(shù)組和集合過濾數(shù)組中的元素驗證一個數(shù)組是否存在特定元素HYPERLINK”http://www。mossfly。com/powershell-where-object。html"\o”PowershellWhere-Object條件過濾"PowershellWhere—Object條件過濾
HYPERLINK"http://www.mossf/category/programming/powershell”\o”查看Powershell中的全部文章"Powershell,HYPERLINK”http://www.m/category/programming"\o”查看程序設計中的全部文章”程序設計
HYPERLINK”http://www.mossfl/powershell—where—object。html”\l”respond”添加評論一172012
本篇會對條件判斷進行實際應用。在管道中可以通過條件判斷過濾管道結果,Where-Object會對集合逐個過濾,將符合條件的結果保留.過濾管道結果使用Get-Process返回所有的當前進程,但是你可能并不對所有的進程感興趣,然后通過每個Process對象的屬性進行過濾。首先得知道每個對象支持那些屬性。根據(jù)進程名過濾所有記事本進程.根據(jù)進程名過濾所有IE進程.根據(jù)company過濾所有產(chǎn)品發(fā)布者以”Microsoft”打頭的進程:使用別名因為Where-Object的使用概率比較高,所以有一個很形象的別名?可以使用:HYPERLINK”http://ww/powershell—foreach-object-loop。html"\o”PowershellForEach-Object循環(huán)"PowershellForEach-Object循環(huán)
HYPERLINK"http://www.moss/category/programming/powershell”\o”查看Powershell中的全部文章”Powershell,HYPERLINK"http://www。mossf/category/programming"\o"查看程序設計中的全部文章”程序設計
HYPERLINK”http://www。mossfly.com/powershell—foreach-object—loop。html"\l”respond”添加評論一222012
Powershell管道就像流水線,對于數(shù)據(jù)的處理是一個環(huán)節(jié)接著一個環(huán)節(jié),如果你想在某一環(huán)節(jié)對流進來的數(shù)據(jù)逐個細致化的處理,可是使用ForEach—Object,$_代表當前的數(shù)據(jù)。對管道對象逐個處理如果使用Get—WmiObject獲取系統(tǒng)中的服務,為了排版可能會也會使用Format-Table對結果進行表格排版.但是如果想對每個服務進行更定制化的處理可是使用ForEach—Object結合條件處理ForEach-Object的處理可以包含任意Powershell腳本,當然也包括條件語句HYPERLINK”http://www。mossfly.com/powershell-foreach-object-loop。html”幫助1234Get-WmiObjectWin32_Service|ForEach-Object{
if($_。ProcessId-gt3000)
{”{0}({1})"—f$_.DisplayName,$_。ProcessID}}調用方法在ForEach—Object中,$_代表當前對象,當然也允許通過$_,調用該對象支持的方法.
下面的例子殺死所有IE瀏覽器進程:Get-Process:找不到名為“iexplore"的進程.請驗證該進程名稱,然后再次調用cmdlet。?所在位置行:1字符:12
+Get-Process〈〈<〈iexplore?+CategoryInfo:ObjectNotFound:(iexplore:String)[Get-Process],?ProcessCommandException?+FullyQualifiedErrorId:NoProcessFoundForGivenName,Microsoft.PowerShell。
Commands。GetProcessCommandHYPERLINK”http://www。mossfly.com/powershell—alias。html"\o"Powershell別名”Powershell別名
HYPERLINK"http://www。mossfly.com/cat(yī)egory/programming/powershell”\o"查看Powershell中的全部文章”Powershell,HYPERLINK”http://www.mossfly.com/category/programming"\o”查看程序設計中的全部文章"程序設計
HYPERLINK”http://www.mossfly.com/powershell—alias.html”添加評論十一242011
cmdlet的名稱由一個動詞和一個名詞組成,其功能對用戶來講一目了然。但是對于一個經(jīng)常使用powershell命令的人每天敲那么多命令也很麻煩啊。能不能把命令縮短一點呢?于是“別名”就應運而生了.Powershell內部也實現(xiàn)了很多常用命令的別名.例如Get-ChildItem,列出當前的子文件或目錄.它有兩個別名:ls和dir,這兩個別名來源于unix的shell和windows的cmd。?因此別名有兩個作用:繼承:繼承unix—shell和windows—cmd。方便:方便用戶使用.處理別名:查詢別名所指的真實cmdlet命令。查看可用的別名
查看可用的別名,可以通過"lsalias:"或者"Get—Alias“?如何查看所有以Remove打頭的cmdlet的命令?說明:diralias:獲取的是別名的數(shù)組,通過where對數(shù)組元素進行遍歷,$_代表當前元素,alias的Definition為String類型,因為powershell支持.net,.net中的string類有一個方法Startswith.通過where過濾集合在powershell中使用非常廣泛。有的cmdlet命令可能有2-3個別名,我們可以通過下面的命令查看所有別名和指向cmdlet的別名的個數(shù).創(chuàng)建自己的別名?給記事本創(chuàng)建一個別名,并查看該別名;刪除自己的別名
別名不用刪除自定義的別名在powershell退出時會自動清除.但是請放心,powershell內置別名(諸如ls,dir,fl等)不會清除。如果你非得手工刪除別名.請使用保存自己的別名
可以使用Export—Alias將別名導出到文件,需要時再通過Import-Alias導入.但是導入時可能會有異常,提示別名已經(jīng)存在無法導入:PSC:\www.mossfly。com〉Import-Aliasalias。ps1Import—Alias:Aliasnotallowedbecauseanaliaswiththename'ac’alreadyexists。Atline:1char:13+Import-Alias〈<〈〈alias。ps1+CategoryInfo:ResourceExists:(ac:String)[Import-Alias],SessionStateException+FullyQualifiedErrorId:AliasAlreadyExists,Microsoft.PowerShell.Commands。ImportAliasCommand這時可以使用Force強制導入。HYPERLINK”http://www.mossfly.com/powershell-as-a—calculator.html”\o”Powershell進行數(shù)學運算”Powershell進行數(shù)學運算
HYPERLINK”http://www.mossfly.com/cat(yī)egory/programming/powershell"\o"查看Powershell中的全部文章"Powershell,HYPERLINK”http://www。mossfly.com/cat(yī)egory/programming"\o”查看程序設計中的全部文章”程序設計
HYPERLINK"http://www。m/powershell-as-a—calculator.html"\l”respond"添加評論十一242011
我們可以把powershell當成一個計算器。象鍵入命令行那樣輸入數(shù)學表達式,回車,powershell會自動計算并把結果輸出.常用的加減乘除模(+,-,*,/,%)運算和小括號表達式都支持。?powershell也能自動識別計算機容量單位,包括KB,MB,GB,TB,PB假如一個網(wǎng)站每個頁面大小為80kb,統(tǒng)計顯示每天的PV操作為800,1個月下來占用的帶寬:假如一個網(wǎng)站的每天人均PV操作為5,頁面大小為80Kb,主機提供商限制的總流量為10G,那平均每天的最大訪客數(shù)為:HYPERLINK”http://www.mossfly.com/powershell—keyboard—shortcuts。html"\o”Powershell快捷鍵"Powershell快捷鍵
HYPERLINK”http://www。mossfly.com/category/programming/powershell"\o"查看Powershell中的全部文章”Powershell,HYPERLINK"http://www。moss/category/programming”\o"查看程序設計中的全部文章”程序設計
HYPERLINK”http://www.mossfly.com/powershell-keyboard-shortcuts.html”\l”respond"添加評論十一232011
Powershell的快捷鍵和cmd,linux中的shell,都比較像。ALT+F7清除命令的歷史記錄PgUpPgDn顯示當前會話的第一個命令和最后一個命令Enter執(zhí)行當前命令End將光標移至當前命令的末尾Del從右開始刪除輸入的命令字符Esc清空當前命令行F2自動補充歷史命令至指定字符?(例如歷史記錄中存在Get-Process,按F2,提示"Enterchartocopyupto”,鍵入‘s',自動補齊命令:Get-Proce)F4刪除命令行至光標右邊指定字符處F7對話框顯示命令行歷史記錄F8檢索包含指定字符的命令行歷史記錄F9根據(jù)命令行的歷史記錄編號選擇命令,歷史記錄編號可以通過F7查看左/右方向鍵左右移動光標上/下方向鍵切換命令行的歷史記錄Home光標移至命令行最左端Backspace從右刪除命令行字符Ctrl+C取消正在執(zhí)行的命令Ctrl+左/右方向鍵在單詞之間移動光標Ctrl+Home刪除光標最左端的所有字符Tab自動補齊命令或者文件名HYPERLINK"http://www。mossfly。com/powershell—do-while—loop。html"\o"PowershellDoWhile循環(huán)”PowershellDoWhile循環(huán)
HYPERLINK”http://www.mossfly.com/cat(yī)egory/programming/powershell"\o"查看Powershell中的全部文章”Powershell,HYPERLINK"http://www.mossfly.com/cat(yī)egory/programming”\o"查看程序設計中的全部文章”程序設計
HYPERLINK"http://www。mossfly。com/powershell-do-while—loop。html"\l”respond”添加評論一242012
Do和While可能產(chǎn)生死循環(huán),為了防止死循環(huán)的發(fā)生,你必須確切的指定循環(huán)終止的條件.指定了循環(huán)終止的條件后,一旦條件不滿足就會退出循環(huán).繼續(xù)與終止循環(huán)的條件do—while()會先執(zhí)行再去判斷,能保證循環(huán)至少執(zhí)行一次。單獨使用While終止當前循環(huán)使用continue關鍵字,可是終止當前循環(huán),跳過continue后其它語句,重新下一次循環(huán)。HYPERLINK”http://www。mossfly。com/powershell-do-while—loop.html"幫助01020304050607080910111213141516171819$n=1while($n-lt6){
if($n-eq4)
{
$n=$n+1
continue
}
else
{
$n
}
$n=$n+1}1235跳出循環(huán)語句跳出循環(huán)語句使用break關鍵字HYPERLINK"http://www.mossfly.com/powershell—do-while-loop.html"幫助01020304050607080910$n=1while($n-lt6){
if($n—eq4)
{
break
}
$n
$n++}HYPERLINK”http://www。mo/powershell-if-else—condition.html"\o”PowershellIF-ELSEIF-ELSE條件"PowershellIF-ELSEIF-ELSE條件
HYPERLINK"http://www。mossfl/cat(yī)egory/programming/powershell"\o"查看Powershell中的全部文章”Powershell,HYPERLINK”http://www.mossfly.com/category/programming"\o”查看程序設計中的全部文章"程序設計
HYPERLINK"http://www.mossfly。com/powershell—if—else—condition.html”添加評論一182012
Where—Object進行條件判斷很方便,如果在判斷后執(zhí)行很多代碼可以使用IF—ELSEIF—ELSE語句。語句模板:If(條件滿足){?如果條件滿足就執(zhí)行代碼
}?Else
{
如果條件不滿足?}
條件判斷必須放在圓括號中,執(zhí)行的代碼必須緊跟在后面的花括號中。HYPERLINK"http://www。mossfly。com/powershell-switch-loop。html”\o”PowershellSwitch循環(huán)”PowershellSwitch循環(huán)
HYPERLINK”http://www.mossfly。com/category/programming/powershell"\o”查看Powershell中的全部文章”Powershell,HYPERLINK”http://www。mossfly.com/category/programming"\o”查看程序設計中的全部文章"程序設計
HYPERLINK”http://www.mossfly.com/powershell—switch-loop.html"\l”respond"添加評論一262012
Switch本是多路分支的關鍵字,但是在Powershell中由于Switch支持集合,所以也可以使用它進行循環(huán)處理。下面舉兩個例子。
第一個將Foreach循環(huán)轉換成Switch循環(huán):幫助01020304050607080910111213141516171819202122#使用Foreach循環(huán)$nums=10.。7foreach($nin$nums){
”n=$n”}n=10n=9n=8n=7
#使用Switch循環(huán)$nums=10.。7Switch($nums){Default{"n=$_"}}
n=10n=9n=8n=7有時對集合的處理,在循環(huán)中還須條件判斷,使用Switch循環(huán)可以一部到位,例如:HYPERLINK"http://www。mossfly.com/powershell-switch-loop.html”幫助0102030405060708091011$nums=10。.7Switch($nums){
{($_%2)—eq0}{"$_偶數(shù)”}
{($_%2)—ne0}{”$_基數(shù)”}}
10偶數(shù)9基數(shù)8偶數(shù)7基數(shù)HYPERLINK”http://www.mossfly.com/powershell—switch-condition。html"\o"PowershellSwitch條件"PowershellSwitch條件
HYPERLINK"http://www.mossfly.com/category/programming/powershell”\o”查看Powershell中的全部文章"Powershell,HYPERLINK"http://www.mossfl/cat(yī)egory/programming"\o”查看程序設計中的全部文章”程序設計
HYPERLINK"http://www。mossfly。com/powershell-switch—condition.html"\l”respond”添加評論一212012
如果語句中有多路分支,使用IF-ELSEIF-ELSE不友好,可以使用Switch,看起來比較清爽一點。?下面的例子將If—ElseIF-Else轉換成Switch語句HYPERLINK”http://www。mossfly.com/powershell-switch—condition.html"幫助0102030405060708091011121314151617181920212223242526#使用IF—ElseIF—ElseIf($value—eq1){
”Beijing”}Elseif($value-eq2){
”Shanghai"}Elseif($value—eq3){
”Tianjin”}Else{
”Chongqing"}
#使用Switchswitch($value){
1{"Beijing”}
2{”Shanghai"}
3{"Tianjin”}
4{"Chongqing”}}HYPERLINK"http://www./powershell-switch—condition.html"幫助1
測試取值范圍使用Switch時缺省的比較運算符為—eq等于,你也可以自己定制比較條件,將條件放在花括號中,必須保證條件表達式的返回值為布爾類型”$True"或”$False"HYPERLINK”http://www.mossfly。com/powershell—switch—condition.html”幫助01020304050607080910$value=18#使用Switch測試取值范圍switch($value){
{$_-lt10}{”小于10"}
10
{”等于10"}
{$_
—gt10}{”大于10"}}#輸出#大于10沒有匹配條件在IF—Else語句中如果沒有合適的條件匹配,可以在Else中進行處理,同樣在Switch語句中如果case中沒有條件匹配,可以使用關鍵字Default進行處理。
同樣是上面的例子,稍加修改:HYPERLINK"http://www。mossfly.com/powershell—switch—condition.html"幫助0102030405060708091011$value=—7#使用Switch測試取值范圍switch($value){
{($_-lt10)—and($_—gt0)}
{"小于10”}
10
{"等于10"}
{$_
—gt10}{”大于10"}
Default{”沒有匹配條件"}}#Output:#沒有匹配條件多個條件匹配如果case中有多個條件匹配,那么每個匹配的條件都會進行處理,例如:HYPERLINK”http://www.mossfly.com/powershell—switch-condition.html”幫助01020304050607080910111213$value=2#使用Switch測試取值范圍switch($value){
{$_—lt5}
{"小于5"}
{$_-gt0}
{”大于0”}
{$_-lt100}{”小于100"}
Default{”沒有匹配條件"}}
#小于5#大于0#小于100如果碰到匹配條件時只處理一次,可以使用Break關鍵字HYPERLINK"http://www.mossfl/powershell—switch—condition.html"幫助0102030405060708091011$value=99#使用Switch測試取值范圍switch($value){
{$_-lt5}
{”小于5";break}
{$_—gt0}
{”大于0";break}
{$_-lt100}
{"小于100";break}
Default{”沒有匹配條件"}}
#大于0比較字符串之前的條件比較的都是數(shù)字,接下來比較字符串,默認的條件判斷為-eq,我們知道在Powershell中字符串的使用-eq比較大小寫不敏感,所以才有下面的例子:HYPERLINK”http://www。mossfly.com/powershell-switch—condition。html"幫助01020304050607080910$domain="www.mossf”switch($domain){
”Www.moSSfly。com”{”O(jiān)k1"}
"www.MOSSFLY.com"{”Ok2”}
”WWW.mossfly。COM”{”Ok3"}}Ok1O(jiān)k2Ok3大小寫敏感怎樣在比較字符串時能夠恢復為大小寫敏感模式,Switch有一個—case選項,一旦指定了這個選項,比較運算符就會從—eq切換到-ceq,即大小寫敏感比較字符串:HYPERLINK”http://www。mossfly.com/powershell-switch-condition。html"幫助123456789$domain="www.mossfly.com”#大小寫敏感switch—case($domain){
"Www.moSSfly。com"{"Ok1"}
”www。MOSSFLY。com”{”Ok2"}
"www.”{”O(jiān)k3"}}#Ok3使用通配符字符串非常特殊,可是使用通配符,幸運的是Powershell也支持,果然Power啊。但是在Switch語句后要指定—wildcard選項HYPERLINK”http://www.m/powershell-switch—condition。html”幫助0102030405060708091011$domain=”www。mossfl”#使用通配符switch—wildcard($domain){
"*”
{”匹配'*’"}
"*.com”{”匹配*。com"}
”*。*。*"{”匹配*。*。*"}}匹配’*'匹配*.com匹配*.*。*在字符串匹配中,比通配符功能更強大是正則表達式,Powershell的Switch語句也支持,真是太棒了。當然需要給Switch關鍵字指定選項-regexHYPERLINK"http://www。moss/powershell-switch-condition.html”幫助0102030405060708091011$mail=”www@mossfly。com”#使用通配符switch-regex($mail){
”^www”
{”www打頭"}
”com$"
{"com結尾”}
”\d{1,3}\。\d{1,3}\。\d{1,3}\。\d{1,3}"{"IP地址"}}
#www打頭#com結尾同時處理多個值Switch支持對集合所有元素進行匹配,下面的例子使用PowershellSwitch語句演示打印水仙花數(shù):HYPERLINK"http://www。m/powershell—switch-condition.html"幫助01020304050607080910$value=100.。999switch($value){{[Math]::Pow($_%10,3)+[Math]::Pow([Math]::Truncate($_%100/10),3)+[Math]::Pow([Math]::Truncate($_/100),3)-eq$_}{$_}}
#153#370#371HYPERLINK"http://www.moss/powershell—invoking-files-and—scripts。html”\o”Powershell執(zhí)行文件和腳本”Powershell執(zhí)行文件和腳本
HYPERLINK"http://www。mossf/category/programming/powershell"\o”查看Powershell中的全部文章”Powershell,HYPERLINK”http://www。mossfly.com/category/programming"\o"查看程序設計中的全部文章”程序設計
添加評論十一282011
象運行可執(zhí)行文件一樣,Powershell運行文件和腳本,也必須使用絕對路徑或者相對路徑,或者要運行的文件必須定義在可受信任的環(huán)境變量中.關于腳本腳本和批處理都屬于偽可執(zhí)行文件,它們只是包含了若干命令行解釋器能夠解釋和執(zhí)行的命令行代碼.執(zhí)行批處理文件批處理是擴展名為”.bat”的文本文件,它可以包含任何cmd控制臺能夠處理的命令。當批處理文件被打開,Cmd控制臺會逐行執(zhí)行每條命令。那Powershell能夠直接執(zhí)行批處理嗎?
將下列命令保存為ping.bat@echooffechobatchFileTestpauseDir%windir%\system然后執(zhí)行ping
屏幕會打印ping命令幫助,說明掉用的pingcmd而不是ping.bat。
改為:這時運行的是批處理。通過cmd進入cmd控制臺輸入ping發(fā)現(xiàn)執(zhí)行的不是ping命令,而是直接運行ping.bat,也就是說可以通過。bat覆蓋cmd命令。這種機制很危險,如果有人侵入電腦,并將系統(tǒng)內部命令篡改成自己批處理,那就太悲劇了。這種命令與腳本的混淆不會發(fā)生在powershell中,因為powershell有更安全的機制.執(zhí)行VB腳本文件將下列命令保存為test。vbsSetwmi=GetObject(”winmgmts:")Setcollection=wmi.ExecQuery("select*fromWin32_Process")ForEachprocessincollectionWScript。Echoprocess。getObjectText_Next執(zhí)行.\test。vbs會遍歷當前Win32進程,并把每個進程的詳細信息通過窗口顯示出來。
怎樣讓VB腳本的通過控制臺輸出呢?
Wscript//H:CScript?怎樣還原VB腳本通過窗口輸出呢??WScript//H:WScript
在powershell中執(zhí)行VB腳本執(zhí)行powershell腳本Powershell擁有自己的腳本,擴展名為“。ps1”初次執(zhí)行腳本時,可能會碰到一個異常:
File"C:\www.mossftest。ps1″cannotbeloadedbecausetheexecutionofscriptsisdisabledonthissystem。Pleasesee“get-helpabout_signing”formoredetails.Atline:1char:10+。\test。ps1〈〈〈<這是powershell的默認安全設置禁用了執(zhí)行腳本,要啟用這個功能需要擁有管理員的權限。?這里有詳細解釋:http://www.mossfly。com/file—cannot—be—loaded-because—the—execution—of—scripts—is-disabled—on—this—system-error—in-powershell.htmlPowershell調用入口的優(yōu)先級別名:控制臺首先會尋找輸入是否為一個別名,如果是,執(zhí)行別名所指的命令。因此我們可以通過別名覆蓋任意powershell命令,因為別名的優(yōu)先級最高。函數(shù):如果沒有找到別名,會繼續(xù)尋找函數(shù),函數(shù)類似別名,只不過它包含了更多的powershell命令.因此可以自定義函數(shù)擴充cmdlet把常用的參數(shù)給固化進去。命令:如果沒有找到函數(shù),控制臺會繼續(xù)尋找命令,即cmdlet,powershell的內部命令.腳本:沒有找到命令,繼續(xù)尋找擴展名為“.ps1”的Powershell腳本。文件:沒有找到腳本,會繼續(xù)尋找文件,如果沒有可用的文件,控制臺會拋出異常.
Theterm‘now'isnotrecognizedasthenameofacmdlet,function,scriptfile,oroperableprogram。Checgofthename,orifapathwasincluded,verifythatthepat(yī)hiscorrectandtryagain.Atline:1char:4+now<<<<+CategoryInfo:ObjectNotFound:(now:String)[],CommandNotFoundException+FullyQualifiedErrorId:CommandNotFoundExceptionHYPERLINK"http://www.mossfly。com/powershell—executing—external—commands.html”\o”Powershell執(zhí)行外部命令”Powershell執(zhí)行外部命令
HYPERLINK"http://www.mossf/category/programming/powershell"\o"查看Powershell中的全部文章”Powershell,HYPERLINK”http://www。mossfly。com/category/programming"\o”查看程序設計中的全部文章”程序設計
HYPERLINK”/powershell—executing—external—commands。html”helpAdd-ContentMicrosoft。PowerShell。ManagementHYPERLINK”http://go.microsoft.com/fwlink/?LinkID=113278”helpAdd—HistoryMicrosoft.PowerShell.CoreHYPERLINK”http://go.microsoft.com/fwlink/?LinkID=113279”helpAdd—MemberMicrosoft.PowerShell.UtilityHYPERLINK”http://go.microsoft。com/fwlink/?LinkID=113280”helpAdd-PSSnapinMicrosoft。PowerShell.CoreHYPERLINK”http://go.microsoft.com/fwlink/?LinkID=113281"helpAdd-TypeMicrosoft.PowerShell。UtilityHYPERLINK"http://go.microsoft.com/fwlink/?LinkID=135195”helpCheckpoint-ComputerMicrosoft。PowerShell。ManagementHYPERLINK”http://go.micr/fwlink/?LinkID=135197"helpClear—ContentMicrosoft.PowerShell.ManagementHYPERLINK”http://go。microsoft。com/fwlink/?LinkID=113282"helpClear-EventLogMicrosoft.PowerShell。ManagementHYPERLINK”http://go.microsoft.com/fwlink/?LinkID=135198”helpClear—HistoryMicrosoft。PowerShell。CoreHYPERLINK”http://go。microsoft。com/fwlink/?LinkID=135199”helpClear-ItemMicrosoft.PowerShell。ManagementHYPERLINK"http://go。microsoft。com/fwlink/?LinkID=113283"helpClear—ItemPropertyMicrosoft.PowerShell。ManagementHYPERLINK"http://go。microso/fwlink/?LinkID=113284"helpClear-VariableMicrosoft.PowerShell。UtilityHYPERLINK”http://go.microsoft。com/fwlink/?LinkID=113285"helpCompare—ObjectMicrosoft。PowerShell.UtilityHYPERLINK”http://go.microsof/fwlink/?LinkID=113286"helpComplete—TransactionMicrosoft.PowerShell。ManagementHYPERLINK"http://go。microsoft.com/fwlink/?LinkID=135200”helpConnect—WSManMicrosoft。WSMan.ManagementHYPERLINK"http://go。microsoft.com/fwlink/?LinkId=141437”helpConvertFrom—CsvMicrosoft.PowerShell.UtilityHYPERLINK”http://go.microsoft.com/fwlink/?LinkID=135201"helpConvertFrom—SecureStringMicrosoft.PowerShell.SecurityHYPERLINK"http://go.microsoft.com/fwlink/?LinkID=113287"helpConvertFrom-StringDataMicrosoft。PowerShell.UtilityHYPERLINK"http://go.microsoft。com/fwlink/?LinkID=113288"helpConvert-PathMicrosoft.PowerShell.ManagementHYPERLINK"http://go.microsoft。com/fwlink/?LinkID=113289"helpConvertTo—CsvMicrosoft.PowerShell.UtilityHYPERLINK"http://go.microsoft.com/fwlink/?LinkID=135203”helpConvertTo-HtmlMicrosoft.PowerShell。UtilityHYPERLINK”http://go。microsoft.com/fwlink/?LinkID=113290”helpConvertTo-SecureStringMicrosoft。PowerShell.SecurityHYPERLINK”http://go。microsoft.com/fwlink/?LinkID=113291”helpConvertTo—XmlMicrosoft.PowerShell.UtilityHYPERLINK"http://go。micro/fwlink/?LinkID=135204”helpCopy—ItemMicrosoft。PowerShell。ManagementHYPERLINK"http://go.microsof/fwlink/?LinkID=113292"helpCopy—ItemPropertyMicrosoft.PowerShell.ManagementHYPERLINK”http://go.microsoft。com/fwlink/?LinkID=113293"helpDebug-ProcessMicrosoft。PowerShell.ManagementHYPERLINK”http://go。microsoft。com/fwlink/?LinkID=135206”helpDisable-ComputerRestoreMicrosoft。PowerShell.ManagementHYPERLINK”http://go.microso/fwlink/?LinkID=135207”helpDisable-PSBreakpointMicrosoft。PowerShell。UtilityHYPERLINK”http://go。microsoft。com/fwlink/?LinkID=113294”helpDisable-PSSessionConfigurationMicrosoft。PowerShell.CoreHYPERLINK”http://go。micro/fwlink/?LinkID=144299”helpDisable—WSManCredSSPMicrosoft.WSMan。ManagementHYPERLINK"http://go。microsoft。com/fwlink/?LinkId=141438"helpDisconnect-WSManMicrosoft.WSMan.ManagementHYPERLINK"http:///fwlink/?LinkId=141439"helpEnable-ComputerRestoreMicrosoft。PowerShell。ManagementHYPERLINK”http://go。microsoft。com/fwlink/?LinkID=135209"helpEnable—PSBreakpointMicrosoft.PowerShell。UtilityHYPERLINK”http://go。/fwlink/?LinkID=113295”helpEnable-PSRemotingMicrosoft。PowerShell。CoreHYPERLINK”http://go.microsoft。com/fwlink/?LinkID=144300”helpEnable-PSSessionConfigurationMicrosoft.PowerShell.CoreHYPERLINK”http://go。microsoft。com/fwlink/?LinkID=144301"help
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車使用與維護 課件 1.4.2 汽車巡航功能
- 2025年電冰柜項目可行性研究報告
- 2025年珠鏈石英表項目可行性研究報告
- 2025年貓仔硬糖項目可行性研究報告
- 低壓電器 課件 單元一 項目一 認識安全用電
- 江蘇省常州市重點達標名校2025年秋初三(下)期末測試卷語文試題含解析
- 南寧學院《結構可靠度理論及其應用》2023-2024學年第二學期期末試卷
- 西藏民族大學《電子系統(tǒng)信號完整性和熱管理》2023-2024學年第二學期期末試卷
- 山西省大同礦區(qū)六校聯(lián)考2025年初三下學期期末教學質量檢測試題化學試題含解析
- 山東省濟寧市嘉祥一中2025年高三教學質量檢查物理試題含解析
- 化工裝置開停車、試生產(chǎn)工作危害分析表及風險管控清單
- 機械設計說明書-精煉爐鋼包車設計
- E+-H-Promass-80流量計基本操作步驟說明書
- 大學語文(第二版)教學課件-黃美玲主編
- 如何進行六年級數(shù)學總復習的講座
- 保密工作會議上的講話(6篇)
- 2023年中國鐵路南寧局招聘筆試參考題庫附帶答案詳解
- 造紙機的電氣傳動系統(tǒng)畢業(yè)設計
- 初中學段勞動任務清單(七到九年級)
- 多菌靈安全技術說明書
- 紀檢監(jiān)察工作使用表格目錄
評論
0/150
提交評論