Time of Update: 2017-01-18
一個指令碼的功能可能有很多,但是並非都是通過一段代碼來完成的。在一個出色的指令碼中,實現各個功能代碼的獨立性,可以保證這個指令碼具有高可用性和易維護性,並且當我們改進或刪減功能時只需刪除對應的代碼塊即可。通常,代碼塊就是指函數,調用函數,就是執行不同的代碼塊,以便實現各種功能。 先看一個例子: 複製代碼 代碼如下: function Time {Get-Date} <enter> 這樣,我們就有了一個新函數"Time",其功能實現代碼就是"{Get-Date}"。 嘗試調用它:
Time of Update: 2017-01-18
我們經常在程式設計中用到的數組,同樣在指令碼中很常用。本節就詳細介紹一下數組,以及雜湊表在PowerShell中的使用。數組在PowerShell中,聲明一個變數為數組時,需要使用符號"@",例如:$strUsers=@(""user1","user2","user3) <enter> 這樣,我們就聲明了一個具有3個成員的數組。查看它的值,使用:$strUsers <enter> 還有一些其他的操作,如統計一個數組的成員數目:$st
Time of Update: 2017-01-18
變數在程式設計中,變數是最基本的概念,它是我們表示資料的在儲存時的代號。在PowerShell中,變數通常供我們在指令碼中使用,它可以是數字、字元、字串,甚至是對象。當然,和任何shell一樣,它也有自己的特定的變數,如:$_ 、$Args、$Error、$Home、$PSHome等。在PowerShell中,所有的變數以“$”開頭,用“=”來給變數賦值。例如:$StrUser = “MR″ <enter> 或者使用"set-variable”
Time of Update: 2017-01-18
在PowerShell中,我們可以使用Function關鍵字來定義一個函數,比如:Function Get-Data { Param ( [int] $data = -1 ) return $data;}這個名為Get-Data的函數接收一個int類型的參數$data,直接將其返回。那麼,我同時還需要一個接收string類型的Get-Data函數怎麼辦?方法比較奇怪,至少和傳統的C++之類的語言不同。在PowerShell中定義重載函數,需要指定參數所屬的Parameter
Time of Update: 2017-01-18
通常情況下,將程式集(Assembly)加入全域組件快取(GAC,Global Assembly Cache),可以使用GacUtil工具。只要使用/i參數,就可以把指定路徑的程式集添加進GAC了。不過由於GacUtil並不是.Net Framework的一部分,而是和Windows
Time of Update: 2017-01-18
快速找出兩個檔案夾中不同的部分,可以使用下面例子:複製代碼 代碼如下:$list1 = Get-ChildItem c:\Windows\system32 | Sort-Object -Property Name $list2 = Get-ChildItem \\server12\c$\windows\system32 | Sort-Object -Property Name Compare-Object -ReferenceObject $list1
Time of Update: 2017-01-18
適用於PowerShell 3.0或者更高版本!PowerShell ISE只支援行斷點:它可以讓指令碼運行至特定的調試行:你可以按F9來添加或者移除斷點。但是需要保證該指令碼已經儲存過(預設的無標題檔案可能就不行)。還有一種更加進階的方法:動態斷點或者說是條件斷點,其中沒有特別限定某行,而是限定於一種特定的情境。比如下面的的樣本指令碼,每當PowerShell給指定的變數賦值時,就會擊中斷點停下來:複製代碼 代碼如下:$bp = Set-PSBreakpoint -Variable a
Time of Update: 2017-01-18
過去的兩天,在項目中,拋棄了ListView, 想試一試RecyclerView, 在用的過程中,遇到了一些問題,比如:如何為RecyclerView添加Header和Footer? 如何為RecyclerView添加分割線?如何為RecyclerView添加下拉重新整理和上拉載入? 在今後的一段時間裡,我會針對這幾個問題,通過寫簡書的方式一一講述,
Time of Update: 2017-01-18
適用於所有版本。某些命令在執行時會自動提示使用者再次確認,這可能會帶來一些問題在無人執行指令碼的時候。要阻止彈出確認提示,需要設定-Confirm為false,如:複製代碼 代碼如下:Remove-ADGroupMember -Identity 'Domain Admins' -Members user12 -Confirm:$false或者你可以改變Powershell中的確認安全等級,將所有命令的確認提示關閉:複製代碼 代碼如下:$ConfirmPreference =
Time of Update: 2017-01-18
適用於3.0及以後版本。一個對象包含多個嵌套屬性和多個子物件。要顯示對象的屬性和自屬性,可以轉換成JSON,它可以更好的表示這些潛逃屬性。這個例子取回當前的Powershell進程,將其屬性轉換成JSON,然後再發送給剪下板。現在你就可以剪下到任何文字物件中去了。複製代碼 代碼如下:Get-Process -Id $pid | ConvertTo-Json |
Time of Update: 2017-01-18
有時候你需要知道命令的執行時間,例如,你可以使用Invoke-WebReques查看網站的響應,再使用Measure-Command計算執行的時間。複製代碼 代碼如下:$url = 'http://www.powershell.com' # track execution time:$timeTaken = Measure-Command -Expression { $site = Invoke-WebRequest -Uri $url} $
Time of Update: 2017-01-18
在之前的小技巧中,我們曾經引入過,一個有聲的進度條。在PowerShell正在做某項忙碌的任務時,可以一直讓它播放某段音樂。代碼如下:複製代碼 代碼如下:# 在windows 檔案夾下面找到要給可用的wav音頻檔案$WAVPath = Get-ChildItem -Path $env:windir -Filter *.wav -Recurse -ErrorAction SilentlyContinue | Select-Object -First 1 -ExpandProperty
Time of Update: 2017-01-18
適用於所有版本。在先前的技巧中我們知道如何用一行命令擷取多行註冊表記錄,這裡,我們再來回顧下這段代碼:複製代碼 代碼如下:$lookup = Get-ItemProperty Registry::HKCR\.[a-f]?? | Select-Object -Property PSChildName, '(default)', ContentType, PerceivedType | Group-Object -Property PSChildName
Time of Update: 2017-01-18
顯示隨機首頁模組(Random Index)一般情況下,一個網站預設首頁都是定義好的index.html、index.shtml、index.php等等,如果想網站下有很多頁面想隨機展示給使用者瀏覽,那得程式上實現,顯得尤為麻煩,如果你安裝了nginx,那麼使用nginx的random index即可達成這個功能,凡是以/結尾的請求,都會隨機展示目前的目錄下的檔案作為首頁.random
Time of Update: 2017-01-18
nginx記錄分析網站響應慢的請求(ngx_http_log_request_speed)nginx模組ngx_http_log_request_speed可以用來找出網站哪些請求很慢,針對網站很多,檔案以及請求很多想找出哪些請求比較慢的話,這個外掛程式非常有效.作者的初衷是寫給自己用的,用來找出網站中處理時間較長的請求, 這些請求是造成伺服器高負載的很大根源. 日誌記錄之後,在使用perl指令碼分析日誌,即可知道哪些請求需要修正.1.
Time of Update: 2017-01-18
支援PS3.0及以後版本。當你使用 Get-ChildItem 檢索檔案,預設是不顯示隱藏檔案的。要包含隱藏檔案,請使用 –Force 參數。複製代碼 代碼如下:PS> Get-ChildItem -Path $home -Force如果只需要顯示隱藏檔案,可以使用參數-Hidden ,但它只支援PS3.0。複製代碼 代碼如下:PS> Get-ChildItem -Path $home -Hidden Directory:
Time of Update: 2017-01-18
這幾天在看Powershell,感覺挺強大的,一個小任務,是用powershell實現多個檔案中檢索萬行記錄的指令碼。剛開始想用用Get-Content
Time of Update: 2017-01-18
適用於所有Windows PowerShell 版本查看一個特定進程的所有者使用者是誰,有多少個改進程的執行個體,可以嘗試下面的代碼:複製代碼 代碼如下:$ProcessName = 'explorer.exe'(Get-WmiObject -Query "select * from Win32_Process where
Time of Update: 2017-01-18
支援所有版本WMI是一個強大的技術:只需要簡單的指定一個WMI類名就能返回它類的所有執行個體:複製代碼 代碼如下:PS> Get-WmiObject -Class Win32_BIOSSMBIOSBIOSVersion : 76CN27WWManufacturer : LENOVOName
Time of Update: 2017-01-18
PowerShell控制台的預設命令列提示為PS+(當前路徑)+箭頭,形如:複製代碼 代碼如下:PS C:\Users\非苔>前面加PS是PowerShell的標誌,為了和傳統的CMD控制台區別開來。後面加當前路徑和箭頭是為了和一般的命令列保持一致。這樣的設計本來無可厚非,但是如果我在寫部落格時,需要執行某個命令然後連同結果一起複製出來,麻煩來了。比如我要示範Get-Date,開啟控制台,敲入命令:複製代碼 代碼如下:PS C:\Users\非苔> Get-Date2014年4月16