PowerShell的初步學習


                今天要重新學習一鍾語法,由於工作中項目的需要,不得不說學習新的語言是必不可少的。
          Windows PowerShell 是一種命令行外科程序和腳本環境,使命令行用戶和腳本編寫者可以利用 .NET Framework 的強大功能。PowerShell是按照linux的b shell, k shell等來的, 除了命令行的界面, 還有一個集成開發環境PowerShell ISE(Integrated Scripting Environment), 類似linux里的vim, vm等腳本編輯工具, PowerShell ISE的界面調試功能使用起來是非常輕松的,使腳本的書寫變得方便了.Windows PowerShell v3將伴隨着MicrosoftHyper-V3.0和Windows Server 2012發布。PowerShell v3是一個Windows任務自動化的框架,它由一個命令行shell和內置在這個.NET框架上的編程語言組成。

                1、PS1文件
           一個PowerShell腳本其實就是一個簡單的文本文件,這個文件包含了一系列PowerShell命令,每個命令顯示為獨立的一行,對於被視為PowerShell腳本的文本文件,它的文件名需要使用.PS1擴展。
         2、執行權限
          為防止惡意腳本的執行,PowerShell有一個執行策略,默認情況下,這個執行策略被設為受限的(Restricted),意味着PowerShell腳本無法執行,你可以使用下面的cmdlet命令確定當前的執行策略:
          Get-ExecutionPolicy 你可以選擇使用的執行策略有:
          Restricted -腳本不能運行。 RemoteSigned - 本地創建的腳本可以運行,但從網上下載的腳本不能運行(除非它們擁有由受信任的發布者簽署的數字簽名)。 AllSigned – 僅當腳本由受信任的發布者簽名才能運行。          
          Unrestricted –腳本執行不受限制,不管來自哪里,也不管它們是否有簽名。
          你可以使用下面的cmdlet命令設置PowerShell的執行策略:
          Set-ExecutionPolicy <policy name>
         3、運行腳本
           如果你想從命令行運行一個可執行文件,多年來一個永恆不變的方法是,在命令行轉到該執行文件所在的位置,然后鍵入該執行文件的名稱,但這個古老的方法現在卻不能適用於PowerShell可執行腳本了。
           如果你想執行一個PowerShell腳本,通常必須鍵入完整的路徑和文件名,例如,假設你要運行一個名為a.ps1的腳本,你可以鍵入:
           C:\Scripts\aps1 最大的例外是,如果PowerShell腳本文件剛好位於你的系統目錄中,那么你可以直接在命令提示符后鍵入腳本文件名即可運行,如:
           .\a.ps1 注意前面需要加上.\,這和Linux下執行Shell腳本的方法如出一轍。
         4、管道
          管道的作用是將一個命令的輸出作為另一個命令的輸入,兩個命令(或cmdlet)之間只需要用管道符號(|)連接即可。
          為了幫助你了解管道是如何工作的,我們以一個例子進行說明,假設你想創建運行在服務器上的進程列表,並按進程的ID 號進行排序,可以使用Get-Process cmdlet命令獲得進程列表,但默認情況下列表不會排序,如果將這個cmdlet命令的輸出用管道輸送給Sort-Object ID命令,進程列表將會按進程ID號進行排序,如:
          Get-Process | Sort-Object ID
         5、變量
         雖然可以使用管道將一個命令的輸出輸送給另一個命令,但管道本身也是有限制的,當你用管道從一個命令向另一個命令傳遞輸出結果時,輸出結果立即被使用,但有時候,你可能需要保存輸出結果一段時間,以便以后可以使用(或重用),這個時候管道就應該下場,輪到變量上場了。
         人們很容易將變量想象成一個倉庫,但在PowerShell中,變量可以保存命令的完整輸出,例如,假設你想保存服務器處於運行中的進程列表,你可以將它賦給一個變量,如:
         $a = Get-Process 在這里,變量被命名為$a,如果你想使用這個變量,只需要簡單地調用它的名稱即可,例如,鍵入$a便可在屏幕上打印變量的內容。
         你可以將多個用管道連接的命令的最終輸出賦給一個變量,只需要用一對小括號將命令括起來即可,例如,假設你想按進程ID對運行中的進程進行排序,然后將結果輸出給一個變量,你可以使用下面這個命令:
         $a = (Get-Process | Sort-Object ID)
         6、@符號
         通過使用@符號,你可以將列表內容轉換成一個數組,例如,下面的代碼創建了一個名為$Procs的變量,它包含多行文本內容(一個數組):$procs = @{name="explorer","svchost"}
         使用變量時你也可以使用@符號,為了確保它作為數組而不是單個值處理,例如,下面的代碼將在我前面定義的變量上運行Get-Process cmdlet命令:
         Get-Process @procsWindows將顯示Windows資源管理器和Svchost使用的所有進程,注意變量前使用的@符號,而不是常見的$符號。
         7、Split
         Split操作符根據你指定的字符拆分一個文本字符串,例如,假設你想將一個句子拆分成一個單詞組成的一個數組,你可以使用下面的命令做到:
         "This is a test" -split " " 拆分后的結果如下:
         This is a test
         8、Join
         就像Split可以將一個文本字符串拆分成多塊一樣,Join的操作則是逆向的,將多個獨立的塊連接成一個整體,例如,下面這行代碼將會創建一個文本字符串,由我的名字和姓氏組成:
         "Brien","Posey" -join " " 命令末尾雙引號之間的空格告訴Windows在兩個文本字符串之間插入一個空格。
         9、斷點
         運行一個新創建的PowerShell腳本時,如果腳本有Bug,會遇到意想不到的后果,保護自己的一個方法是在腳本的關鍵位置插入斷點,這樣你就可以確保腳本正常運行先,然后再處理可能存在的問題。
         插入斷點最簡單的方法是根據行號插入,例如,假設你要在第10行插入一個斷點,可以使用下面的命令:
         New-PSBreakpoint -Script C:\Scripts\a.ps1 -Line 10 你也可以將斷點綁定到變量上,如果你希望你的腳本任何時候都可以修改a$的內容,可以使用下面的命令:
         New-PSBreakpoint -Script C:\scripts\a.ps1 -variables a 注意,我在變量名后並沒有包括美元符號。
         可以和PSBreakpoint一起使用的動詞包括New,Get,Enable,Disable和Remove。
         10、Step
         調試一個腳本時,有時可能需要逐行運行腳本,這時你可以使用Step-Into cmdlet命令,它會使腳本一行一行地執行,不管有沒有設置斷點,如果你想從這種步進式運行模式退出來,使用Step-Out cmdlet命令即可,但需要注意的是,使用Step-Out cmdlet命令后,斷點仍然有效。
         順便說一句,如果你的腳本使用了函數,你可能對Step-Out cmdlet更感興趣,Step-Out的工作方式和Step-Into一樣,不過,如果調用了一個函數,Windows不會逐步執行,整個函數將會一次性執行。

         11.獲取當前時間的年月日格式

$curDate=[System.DateTime]::Now          
$currentDate= [System.DateTime]::ParseExact($curDate, 'yyyy/MM/dd', $null)
$downloadDate=([System.DateTime]::Now).ToString().substring(0,10)

          12.if-else語句的用法

$a=6
if($a -eq '提攜中')
{
$b = '提攜'
}
else
{
$b= $a
}
$a = 6
if($a -eq '')
{
$b = 0
}
else
{
$b= 1
}
$a='am'
$b='2'
if($a -eq 'pm' -and $b -eq '2')
{
$c = $a
}
else
{
$c = $b
}
$a ='承認済'
$a = '承認'
if($a -eq '承認済' -or $b -eq '承認済')
{
$c=0
}
else
{
$c=1
}
$a='私は學習'
if($a.Length -gt 4)
{
$b=$a.substring(0,4)
}
else
{
$b=$a
}
if($entity.SELFBACK -ne '0')
{
$entity.SELFBACK='1'
}
else
{
$entity.SELFBACK='0'
}
$c=1256,5
$a = [System.String]::IsNullOrEmpty('123')
if($a)
{
$b=0
}
else
{
$b=[System.Int32]::Parse($c.Replace(',',''))
}

           13.調用方法時間Powershell的用法

$a=5.636
$b = [Math]::Round($a,[MidpointRounding]::AwayFromZero)
$a='123'
$b = [System.Int32]::Parse($a])
$a= $Null
$b = 0
$a='263'
$b = [System.String]::IsNullOrEmpty($a)
if($b)
{
$c= 0
}
else
{
$c=$a
}

          綜上所述Powershell 中的比較運算符:                   
          -eq :等於
         -ne :不等於
         -gt :大於
         -ge :大於等於
         -lt :小於
         -le :小於等於
         -contains :包含
         -notcontains :不包含

                好啦,僅僅針對powershell就總結到這里,我主要是在程序中簡單的使用該語句,對其進行的總結還是更多的參照百度百科,今天就總結到這里啦,嘿嘿。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM