PowerShell-第1章 交互界面

1.1運行程序、腳本和已有的工具:shell

  Program.exe arguments數組

  ScriptName.ps1 argumentside

  BatchFile.cmd arguments工具

  若是運行的命令名中包含空格,則用引號' 將命令括起來,同時在前邊加上符號&,這稱做調用操做,例:ui

    & 'C:\Program Files\Program\Program.exe' arguments命令行

  運行當前目錄下的文件debug

    .\Program.exe arguments調試

  運行當前目錄下那些命令名中包含空格的命令,同時加上符號&和.\,例:日誌

    & '.\Program Files\Program\Program.exe' argumentscode

  在PowerShell提示符下,進行表達式運算:

    

1.2 運行PowerShell命令

  Get-Process命令是一個內置的PowerShell命令,稱之爲cmdlet,爲管理員和開發人員提供了重要的功能。

  1>採用同一的命令語法

  2>支持豐富的管道功能

  3>輸出易於管理的對象,而不是容易出錯的文本

  

1.3 自動以shell、配置文件與提示符

  PowerShell默認將你的腳本文件的地址存放在$profile變量中,能夠經過這個變量來訪問腳本文件。

  建立新的腳本文件(覆蓋已存在的):

    New-Item -type file -force $profile

  編輯已存在的文件:

    notepad $profile

  查看配置腳本文件的內容:

    Get-ChildItem $profile

  

  修改控制窗口的標題:

    $host.UI.RawUI.WindowTitle ="標題"

  修改輸出提示的顏色:

    Write-Host -ForegroundColor DarkGray "改變輸出提示的顏色"

  

1.4 查找實現指定任務的命令

  得到指定命令的概要信息:  

    Get-Command CommandName

  得到指定命令的詳細信息,將Get-Command的輸出結果重定向到Format-List命令:

    Get-Command CommandName | Format-List

  想搜索包含"text"的全部命令,用星號*,例:

    Get-Command *text*

  想搜索全部使用Get動詞的命令,在-Verb後輸入參數Get,以下:

    Get-Command -Verb Get

  想搜索全部與服務有關的命令,在-Noun後加入參數Service,以下:

    Get-Command -Noun Service

1.5 得到命令幫助

  得到一個命令的概要幫助,主要包括命令的大綱,語法以及細節描述:

    Get-Help CommandName

    或者 CommandName -?

  得到一個命令的幫助信息的詳情,包括參數說明和示例:

    Get-Help CommandName-Detailed

  得到一個命令的詳細的幫助信息,包含所有參數描述和註釋信息:  

      Get-Help CommandName -Full

  得到一個命令的例子信息,以下:

     Get-Help CommandName -Examples

  得到更多關於Get-Help的信息:

    Get-Help Get-Help

1.7 在PowerShell以外調用PowerShell腳本

  從批處理文件、登陸腳本、定時任務或其餘非PowerShell應用程序中調用PowerShell腳本:

    PowerShell "& 'full path to script' arguments"

    例:PowerShell "& 'C:\shared scripts\Get-Report.ps1' Hello World"

1.9 得到系統日期與時間

    Get-Date

  檢查今天是星期幾,以下:

    $date=Get-Date

    $date.DayOfWeek

    

  Get-Help Get-Date能夠查看更多關於Get-Date的命令

1.10 檢查最後運行命令的狀態

  PowerShell提供了兩個變量來監測最後執行的命令是否成功,這兩個變量是$lastExitCode和$?

  變量$lastExitCode:

    數字型,它返回最後腳本或應用程序執行返回的退出碼或出錯級別

  變量是$?:

    布爾型,返回最後執行命令的成功true或失敗false

  

1.11 計算命令執行的時間

  計算一個命令執行的時間:  

    Measure-Command { Start-Sleep -Milliseconds 337 }

    

1.12 PowerShell快捷鍵

  Up 向前搜索歷史命令

  Down 向後搜索歷史命令

  PgUp 顯示歷史命令中第一個命令

  PgDown 顯示歷史命令中最後一個命令

  Left 把光標向左移動一個字符

  Right 把光標向右移動一個字符

  Home 在命令行中,把光標移到開始位置

  End 在命令行中,把光標移到結束位置

  Ctrl+Left 把光標向左移動一個單詞

  Ctrl+Right 把光標向右移動一個單詞

1.14 使用與管理控制檯歷史

  得到最近使用的命令:

    Get-History

  從歷史命令中得到指定的某個命令,能夠將命令的ID傳給Invoke-History,以下:

    Invoke-History Id

  經過給$MaximumHistoryCount賦值,能夠增長或限制會話歷史中存儲命令的數量

    $MaximumHistoryCount =Count

  保存歷史命令到文件,可使用管道命令:

    Get-History | Export-CliXml Filename  

  將已經保存的命令加載到控制檯,利用管道重定向便可

    Import-CliXml Filename | Add-History

1.15 將命令的輸出保存到文件

  經過Out-File命令或者重定向操做符將命令輸出的結果保存到文件中

  Out-File

    Get-ChildItem | Out-File unicodeFile.txt

    Get-Content filename.cs | Out-File -Encoding ASCII File.txt

    Get-ChildItem | Out-File-Width 120 unicodeFile.cs

  重定向操做符

    Get-ChildItem > file.txt

    Get-ChildItem 2> file.txt

1.16 向文件的結尾處加入信息

  將管道輸出定向到文件中,而且在文件後面追加信息

  使用Out-File命令的參數-Append

    Get-ChildItem | Out-File -Append files.txt

  重定向操做符

    Get-ChildItem >> files.txt

1.17 記錄你的會話全文

  記錄當前會話的日誌或全文

    Start-Transcript path

    Stop-Transcript

    path是可選項,用來指定記錄的文件名,它基於當前的系統時間。默認狀況下,將這個文件保存到My Documents目錄下,若是想中止記錄,則Stop-Transcript。

1.18 將某一項的屬性顯示成列表

  顯示一個項的詳細信息,可使用管道命令功能把項輸出給Format-List命令,例如:

    $currentError=$error[0]

    $currentError | Format-List -Force

    PowerShell中有三種格式化命令:Format-Table、Format-Wide和Format-List,Format-List得到輸入將以列表方式顯示出來。

    默認狀況下,PowerShell從安裝目錄下的*.format.ps1xml文件中得到要顯示的屬性。若是想顯示全部的屬性,能夠鍵入Format-List *。

    有些時候你鍵入了Format-List *,可是不能得到項的屬性列表,這種狀況的出現是因爲在*.format.ps1xml文件中定義了項,可是沒有定義任何在列表命令中藥顯示的條目,

    這種狀況下,能夠鍵入Format-List -Force

1.19 將某一項的屬性顯示成表格

  將命令的輸出以管道方式輸出給Format-Table,以下:

    Get-Process | Format-Table

    

  顯示特定的屬性

    Get-Process | Format-Table Name,WS

    

  通知PowerShell以最易閱讀的方式來格式化表格,能夠提供-Auto參數給Format-Table

    Get-Process | Format-Table Name,WS -Auto

    

  自定義列(以兆爲單位顯示一個進程的工做集),能夠提供一個自定義的格式

    $fields="Name",@{Label="WS (MB)"; Expression={$_.WS / 1mb}; Align="Right"}

    Get-Process | Format-Table $fields -Auto
    

1.20 管道命令的錯誤輸出

  列出當前會話列表中發生的全部錯誤,可訪問$error數組:

    $error

  列出會話列表中最後發生的錯誤,即訪問$error數組中的第一個值

    $error[0]

  列出錯誤的詳細信息,以管道方式輸出給Format-List,注意要加上-Force

    $currentError=$error[0]

    $currentError | Format-List -Force

  列出引發錯誤的命令的詳細信息,能夠訪問InvocationInfo屬性

    $currentError=$error[0]

    $currentError.InvocationInfo

  以更加簡潔的基於分類的方式顯示錯誤,修改變量$errorView的值

    $errorView="CategoryView"

  清除PowerShell產生的錯誤

    $error.Clear()

1.21 配置調試、校驗和處理輸出

  啓動腳本和生成它的命令的調試信息的輸出

    $debugPreference="Contiune"

    Start-DebugCommand

  啓用命令的校驗模式

    Copy-Item c:\temp\*.txt c:\temp\backup\ -Verbose

  禁用腳本或命令產生的進度信息

    $progressPreference ="SilentlyContinue"

    Ger-Process.ps1

  處理產生錯誤輸出以外,許多腳本和命令還生成其餘幾種輸出,包括:

  調試輸出:診斷問題

    Write-Debug

    或調用WriteDebug()

    輸出這類信息。除非經過$host.PrivateData.Debug*顏色配置變量來定義輸出信息的顏色,不然會以黃色顯示這類信息

  驗證輸出:監視命令的動做

    Write-Verbose

    或調用WriteVerbose()

    輸出這類信息,除非經過$host.PrivateData.Verbose*顏色配置變量來定義輸出信息的顏色,不然會以黃色顯示這類信息

  進度輸出:監視長時間運行的命令的狀態

    Write-Process

    或者調用WriteProgress()

    輸出這類信息,除非經過$host.PrivateData.Progress*顏色配置變量來定義輸出信息的顏色,不然會以黃色顯示這類信息

  一些命令只有在分別指定-Verbose或-Debug參數後纔會產生炎症或調試信息。爲了配置腳本或命令的調試、驗證或進度信息,能夠經過修改shell變量

  $debugPreference、$verbosePreference和$progressPreference來達到目的,這些變量可接受的值有:
    安靜模式(silentlyContinue): 不顯示輸出信息

    中止模式(stop):將輸出視爲錯誤

    繼續模式(continue):顯示輸出

    詢問模式(inquire):顯示繼續操做信息

相關文章
相關標籤/搜索