幾周前,Geek向您展示瞭如何使用命令提示符來查詢您的計算機上一次啟動的時間。在上一次安裝Geek School for PowerShell時,我們將編寫一個可重用的PowerShell命令來完成同樣的任務。
請務必閱讀本系列之前的文章:
我們需要做的第一件事是找到一種方法來獲取我們所尋找的資訊。因為我們處理的是管理資訊,所以我們可能需要研究一下使用WMI,它確實有一個名為Win32\u OperatingSystem的類,允許您檢視有關作業系統的詳細資訊,包括上次啟動的時間。
既然我們知道在哪裡可以找到我們要找的資訊,開啟ISE並鍵入以下內容。
Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost |
Select-Object -Property CSName,LastBootUpTime
注意:我不得不把程式碼分成兩行,這樣就可以把所有的程式碼都放進螢幕截圖中,但是可以隨意在一行中輸入。如果選擇將其拆分為兩行,請確保管道字元是第1行的最後一個字元。
現在單擊綠色的“執行指令碼”按鈕或按鍵盤上的F5鍵來測試程式碼。
WMI時間可能有點神祕。我們的意思是,如果你看一下LastBootUpTime屬性,它顯示2013-03-19在18:26:21,但是出於某種原因,WMI人員決定將所有這些連線到一個字串中。幸運的是,我們不必擔心手動解析字串,因為有一種更簡單的方法,儘管更高階。您需要將程式碼的“選擇物件”部分更改為如下所示:
Select-Object -Property CSName,@{n=”Last Booted”;
e={[Management.ManagementDateTimeConverter]::ToDateTime($_.LastBootUpTime)}}
我們在這裡所做的是建立一個名為“Last Booted”的自定義屬性,並指定其值必須是對當前管道物件的LastBootUpTime屬性呼叫ToDateTime靜態方法的結果。您的程式碼現在應該如下所示。
現在執行程式碼將產生更可讀的上次引導時間。
既然我們對指令碼的基本功能感到滿意,就需要儲存它。為簡單起見,我們將其另存為:
C:\Get-LastBootTime.ps1
現在切換到ISE的下半部分並執行以下操作:
C:\Get-LastBootTime.ps1
太好了!我們的指令碼按預期工作,但是指令碼仍然存在一個問題。我們硬編碼了我們想要得到最後一次啟動時間的計算機的名稱。我們應該提供一個引數,這樣無論是誰使用指令碼,都可以選擇執行指令碼的計算機,而不是硬編碼值。要做到這一點,請轉到指令碼的頂部並執行以下操作。
param( [string]$ComputerName )
然後用$ComputerName變數替換硬編碼的localhost值。您的指令碼現在應該如下所示:
儲存指令碼,然後返回ISE的下半部分並檢視指令碼的幫助。
help C:\Get-LastBootTime.ps1
太棒了,現在我們可以指定要使用新的ComputerName引數獲得上次啟動時間的計算機的名稱。不幸的是,仍然有一些事情是錯誤的。首先,ComputerName引數是可選的,其次,這是我見過的最難看的幫助,所以讓我們快速解決這些問題。要使ComputerName引數成為必需引數,請將param塊的內容更改為以下內容。
[Parameter(Mandatory=$true)][string]$ComputerName
至於**更好的幫助檔案,最常用的方法是使用基於註釋的幫助。這意味著我們只需在指令碼的頂部新增一個超長的註釋。
<# .SYNOPSIS Shows when last your PC started up. .DESCRIPTION This is a WMI wrapper function to get the time that your PC last started up. .PARAMETER ComputerName The name of the Computer you want to run the command against. .EXAMPLE Get-LastBootTime -ComputerName localhost .LINK www.tl80.cn #>
一旦所有這些都完成了,你應該得到這樣一個指令碼。
現在讓我們去看看我們的新幫助檔案。
啊,看起來太好了!現在我們的指令碼已經完成了,我們還有最後一件事要做:測試。為此,我將退出ISE並返回PowerShell控制檯,以便確保沒有異常。
如果你從一個簡單的一行開始,就像我們在本指南中所做的那樣繼續構建它,你將很快掌握它的竅門。這一次就到此為止,各位,下次安裝極客學校時再見。
大多數使用者從未聽說過PowerShell,更不用說觸控它並試用了。這可能是因為這個名字,聽起來像是隻有鐵桿IT極客才會使用的東西。或者是因為PowerShell的好處還不清楚。可能是因為最初的學習曲線。 ...
如果你使用googlesheets或googledocs之類的Google應用程式,googlescript允許你完成類似桌面應用程式無法完成的事情。 ...
Windows PowerShell具有內建的命令歷史記錄功能,可提供有關已執行命令的詳細資訊。與命令提示符一樣,PowerShell只記住當前會話的命令歷史記錄。 如何使用命令列緩衝區 相關:極客學校:學習如何用PowerShell自動化Windows PowerShel...
...以輕鬆地重新命名一個或多個檔案,但使用命令提示符或PowerShell,您還可以執行更多操作。再加上第三方重新命名工具,可能性是無窮的。讓我們看看每個選項及其工作原理。 在windows資源管理器中重新命名多個檔案 Windows資...
....1和7上執行此操作的幾種不同方法。 簡單的方法:使用powershell命令 相關:極客學校:學習如何用PowerShell自動化Windows PowerShell是Windows中最強大的工具之一,所以它當然可以做一些簡單的事情,比如列出你安裝的程式。事實上...
...嘗試執行它。這不需要太多時間,可能會有幫助。 向powershell重新註冊windows應用商店 如果所有這些都失敗了,您可以嘗試重新註冊Windows應用商店,這是您可以重新安裝它。為此,您需要使用PowerShell,這是一種內置於Windows中...
由於幾個主要與安全相關的原因,PowerShell指令碼不像批處理指令碼那樣易於移植和使用。但是,我們可以將批處理指令碼與PowerShell指令碼捆綁在一起,以解決這些問題。在這裡,我們將向您展示一些問題領域,以及如何構建批...
...題,通常可以透過更換至少一個柱塞杆來解決。 windows powershell(x86) PowerShell是一種高階指令碼環境。對於那些在Windows上真正需要命令列介面的人來說,PowerShell是Windows命令提示符的強大繼承者。如果您不需要一個強大的命令...
Windows7增加了PowerShell,一種比命令提示符更強大的命令列shell和指令碼語言。自Windows7以來,PowerShell變得更加突出,它甚至成為Windows10的預設選擇。 PowerShell比傳統的命令提示符更復雜,但它也更強大。命令提示符明顯不如Linux...