?

巧用PS命令,靈活管理本本

2020-01-16 07:38郭建偉
電腦知識與技術·經驗技巧 2020年9期
關鍵詞:本本磁盤網卡

郭建偉

對于本本用戶來說,為了發揮其功能,就需要經常對其進行管理和維護。在一般情況下,我們會使用各種工具軟件,對本本進行管控操作。其實,在Windows中已經內置了PowerShell這一高效的管理工具,完全可以實現各種管理和維護功能。隨著Windows版本的演進,PowerShell也變得越來越成熟和實用。下面就從多個方面,講解如何使用PowerShell命令,對本本進行管理操作。

輕松管理本本賬戶

這里以Windows 10環境為例,來介紹相關的PowerShell命令。例如,在PowerShell中執行“$Password=ConvertTo-SecureString”123.com“-AsPlainText-Force”命令,產生內容為“123.com”的密碼項。執行“New-LocaIUser-Name adminuser-Password $Password-AccountNeverExpires Add-LocalGroupMember-Group administrators-Member adminuser”命令,創建名為“adminuser”的賬戶。

使用上述密碼,并將其添加到Administrators組中。如果想更改其密碼,可以先執行“$Password=ConvertTo-SecureString”123456.com“-AsPlainText-Force”命令,設置內容為“123456.com”的密碼項。之后執行“Set-LocalUser-Name adminuser-Password$Password”命令,為該賬戶設置新的密碼。如果想刪除該賬戶,可以執行“Remove-LocalUser-Name adminuser”命令即可。執行“whoami/user”命令,可以查看當前賬戶的名稱和SID。執行“wmic useraccount get name,sid”命令可以查看所有賬戶的登錄信息。

自動備份本本日志信息

不管是系統還是應用程序,日志的作用都是極為重要的。利用日志,不僅可以跟蹤和紀錄本本的運行狀態,在出現問題時,還可以根據日志來準確排錯。例如,點擊Win+R鍵,執行“eventvwr.msc”程序,在事件管理器中可以查看系統日志信息。也可以利用PowerShell命令進行查看,例如執行“Get-EventLog-LogName system-Newest 100”命令,查看最新的100條系統日志信息。

在默認情況下,打開“C:\Windows\system32\winevt\logs”目錄,可以看到各種日志信息,例如“Application.evtx”表示應用程序日志,“system.evtx”表示系統日志等。在一般情況下,日志的大小為20MB,如果日志長度超過該值,那么新的日志就會覆蓋舊的日志,這樣可以避免磁盤空間被過度占用。但是,在很多時候,這種簡單的覆蓋操作并不能滿足實際的需求,需要對日志進行定期備份,以便于進行安全審計等操作。

例如,在PowerShell中執行“$LogFile=Get-WmiObject-Class Win32_NTEventLogFile|Where-Object{$_.LogFileName-eq 'System')”命令,可以獲取系統日志的文件信息。這里使用了“Get-WmiObject”函數來調用名為“Win32_NTEventLogFile”的WMI類,該類的作用主要是處理系統日志。如果將“'System'”替換為“'Application'”或者“'Security'”,則可以獲取應用程序或者安全日志信息。執行“$Date=Get-Date”命令,獲取當前的時間信息。

執行“$bffile='e:\logbak\'+$LogFileName+$Date.Year.ToString()+ $Date.Month.ToString()+ $Date.Day.ToString()+”.evtx""命令,可以將當前時間信息中的年月日的值提取出來,和日志名稱組合起來,加上“.evtx”后綴,來組成備份路徑名稱。

這里的備份文件存儲在“e:\logbak”目錄下。執行“$LogFile.B ackupEventLog($bffile)”命令,進行日志的備份操作,得到所需的日志備份文件。執行“Clear-EventLog-LogName'Security'”命令,清除當前指定的日志信息。為了便于使用,可以將上述命令保存為“autobaklog.ps1”文件。打開任務計劃窗口,在右側點擊“創建基本任務”項,在向導界面中輸入該任務的名稱(例如“定時備份系統日志”),點擊下一步按鈕,在“希望該任務何時開始”欄中選擇“每天”項。

在下一步窗口中設置開始日期和觸發時間,在“每隔”欄中輸入具體的周期數,例如“30”表示每隔30天執行一次。點擊下一步按鈕,選擇“啟動程序”項。在下一步窗口(圖1)中點擊瀏覽按鈕,選擇“c:\windows\system32\WindowsPowershell\v1.0\powershell.exe”程序,在“添加參數”欄中輸入“d:\autobaklog.ps1”,這里假設將該腳本文件保存在D盤中。之后點擊完成按鈕,創建該任務。

這樣,當到達預設的時間后,就可以自動備份所需的日志了。同理,對于目標程序的日志備份也可以使用類似的方法來實現。首先需要了解目標程序的日志存儲路徑,這里假設為“d:\exchage\log”,日志文件后綴為“.log”。在PowerShell中執行“$LogFile=Get-Childltem-Path'd:\exchage\log'-Recurse-Filter"*.log"”命令,根據指定的日志路徑,得到目標程序全部的日志文件信息,包括子目錄中的日志文件。執行“$Date=Get-Date”命令,獲取當前的時間信息。

執行“$BakLogPath='e:\logdata\exchange\'+$Date.Year.ToString()+ $Date.Month.ToString()+ $Date.Day.ToString()+"\"”命令,提取當前時間信息中的年月日的值組合成備份路徑名稱,這里備份路徑為“e:\logdata\exchange”。所有的備份文件都保存在該路徑下。執行“New-Item-Path$BakLogPath-ItemType Directory”命令,按照上述組合的名稱,在指定備份路徑下創建備份目錄。執行“$LogFiles|Copy-Item-Destination $BakLogPath”命令,將所有的日志文件復制到該備份目錄中。執行“$LogFile|Remove-Item”命令,清理當前的日志文件??梢园凑丈鲜龇椒?,在計劃任務窗口中為其創建對應的定時備份任務,例如每隔10天執行一次備份操作等。

查看本本網絡配置信息

使用PowerShell可以進行網絡初始化操作,獲取網卡信息,配置IP/默認網關/DNS服務器地址等。因為在PowerShell中提供了不同的Module,在每個Module中提供了不同的命令和函數,可以執行各種配置操作。執行“Get-NetAdapter”命令,顯示所有的網卡設備。執行“Get-NetIPAddress”命令,顯示所有網卡的詳細IP地址信息。這些命令實際上是由不同的Module來提供的,執行“Get-Command Get-NetAdapter”命令,在“Source”列中顯示提供該函數具體的Module的名稱。

例如想查看名為“NetAdapter”這個Module的函數,可以執行“Get-Command-Module NetAdapter”命令,顯示該Module中提供的所有函數。執行“Get-Command-Module NetAdapter Imeasure”命令,顯示具體的函數數量。執行“Get-Command-Module NetAdapter-Verb get”命令,可以查看在該Module中獲取信息的函數。例如執行“Get-NetAdapterAdvancedProperty-name Management”命令,顯示關于名為“Management”這款網卡的高級屬性信息。執行“Get-Command-Module NetAdapter-Verb set”命令,可以查看該Module中相關的設置函數。

例如執行“Get-NetAdapter|where{$_.ifindex-eq 6)|Rename-NetAdapter-name"newAdapter"”命令,可以將選定的網卡更名為“netAdapter”,該命令中的“6”表示該網卡的索引編號,在查看網卡信息的命令中會顯示該編號。注意,該命令需要以管理員身份運行PowerShell。執行“Get-NetAdapter|where{$_.ifindex-eq 6}|New-NetIPAddress-IPAddress 192.168.1.50-DefaultGateway'192.168.1.1-PrefixLength 24”命令,就可以針對目標網卡設置其IP和默認網關信息。執行“Set-DnsClientServerAddress-InterfaceIndex 6-ServerAddresses'192.168.1.50'”命令,可以設置目標網卡的DNS服務器地址,其中的“6”表示該網卡的索引編號。執行“Get-Module”命令,顯示使用過的或者已經加載的Module。

為本本巧設磁盤報警器

對于現在的系統和軟件來說,不僅體積比較龐大,而且產生的數據(例如日志等)也比較占用磁盤空間。如果磁盤空間不足,就可能出現各種奇怪的故障。對于本本的系統盤來說,此類情況尤為常見。如果本本可以在磁盤容量低于警戒值后,自動向您的手機發送短信,就可以及時提醒您對磁盤進行優化,擴充其容量,避免可能由此引發的故障。

實際上,現在移動服務運行商都為用戶免費提供了郵件提醒功能,當然,服務器需要能夠訪問Internet方可。當郵箱收到郵件后,可以自動向用戶的手機發送短信,這樣就可以輕松實現磁盤容量短信報警功能。在PowerShell中執行“$Disklist=Get-Volume”命令,獲取當前系統的磁盤信息。

執行“foreach($volletter in$Disklist){”命令,開啟一個循環,將獲取的每個磁盤信息賦予名為“Volletter”的變量。執行“if($Volletter.DriveType-eq"Fixed"-and$Volletter.FileSystemLabel-ne"系統保留”){”命令,將非硬盤分區以及系統保留分區全部清除,只保留可用的硬盤分區。

執行“[int]$kyrl=$Volume.SizeRemaining/1GB”命令,將當前硬盤分區的可用容量轉換為GB單位。執行“if($kyrl-lt 5){”命令,如果當前硬盤分區可用容量小于5GB,那么就觸發預設的動作。

執行“$Date=Get-Date”命令,獲取當前的時間信息。執行“$fjr="user@163.com"”“$sjr="xxxxxx@mixazure.com"”“$zhuti=$Volume.DriveLetter+"磁盤容量告警””“$neirong="該硬盤分區可用空間小于指定值,請清理磁盤空間!"”“$SMTPfwq="smtp.xxx.com"”命令,設置發件人信息,這里假設為“user@163.com”,并設置收件人信息,“xxx”為收件人手機號碼。設置郵件的主題為磁盤不足的報警信息,并顯示具體的磁盤盤符,在郵件內容部分設置具體的提醒信息。

執行“$Password=ConvertTo-SecureString"p@asswOrd"-AsPlainText-Force”命令,設置當前賬戶的密碼信息,這里密碼為“p@asswOrd”。執行“$cred=New-Object System.Management.Automation.PSCredential("xxx\aduser",$Password)”命令,設置憑證信息,其中的域名為“xxx”,賬戶名為“aduser”。執行“Send-MailMessage-To $sjr-From $fjr-Subject$zhuti-Body $neirong-SmtpServer $SMTPfwq-Credential $cred-Encoding UTF8)))”命令,使用“Send-MailMessage”函數,并結合上述指定的收件人、發件人、主題、郵件內容等預設信息,以指定的賬戶身份發送郵件。

當執行以上命令后,就可以對所有的硬盤分區間磁盤進行掃描,如果某個分區的容量低于預設值,就發送郵件信息進行提醒,郵箱隨即會以短信的形式發送到管理員的手機上。為了實現自動檢測操作,可以按照上述方法,將上述命令行保存為獨立的腳本文件,創建所需的計劃任務項目,在每天的指定時間(例如凌晨0點等),執行該計劃任務。打開該任務的屬性窗口,在“觸發器”面板中選擇當前的觸發器項目,點擊“編輯”按鈕,在打開窗口(圖2)中選擇“重復任務間隔”項,設置重復執行的周期(例如30分鐘),這樣每個指定的時間,就會自動執行本計劃任務,檢測所有硬盤分區的可用容量,如果低于指定值,就會向管理員發送報警短信。

深入查看本本信息

使用PowerShell提供的WMI(即WindowsManagement Instrumentation)機制,無須借助任何工具,就可以讓本本用戶輕松獲取系統中的各種信息。其中的某些信息,是無法利用常規的GUI方式來獲取的。例如在PowerShell窗口中執行“wmimgmt.msc”命令,在打開窗口中左側的“WMI控件(本地)”節點的右鍵菜單上點擊“屬性”項,就會和本地的WMI服務建立連接,在屬性窗口(圖3)中的“常規”面板中顯示WMI的版本和類庫位置信息,其默認位置為“C:\Windows\System32\wbem”。

在“安全”面板中打開“Root”節點,會顯示WMI的命名空間信息,在不同的命令空間節點中包含著對應的WMI類。當使用PowerShell來訪問WMI的類庫,獲取相關的系統信息時,必須指定對應的入口,這就和上述不同的命令空間相對應的。例如執行“Get-WmiObject-Namespace root\cimv2-ClassNameWin32_OperatingSystem”命令,顯示常規的操作系統信息。其中的“root\cimv2”就是一個命令空間項目。

執行“Get-WmiObject-List-Namespaceroot\cimv2|measure”命令,會顯示這些類的數量。因為涉及的類的數量很多,利用PowerShell的篩選功能,可以只顯示指定的類。執行“Get-Wmiobject-List-Namespace root\cimv2|where{$_.name-like"*memory*")”命令,會在其中過濾與內存相關的類的信息。執行“Get-Wmiobject Win32_PhysicalMemory”命令,會顯示詳細的內存配置信息。注意,其效果與執行“Get-WmiObject-Namespaceroot\cimv2-ClassName Win32_PhysicalMemory”命令是等效的。

打開上述屬性窗口的“高級”面板(圖4),在“腳本程序的默認命令空間”欄中顯示“root\cimv2”,所以即使不指定命令空間名稱,PowerShell也會使用默認的名稱。執行“Get-Wmiobject Win32_Processor”命令,會顯示CPU的基本信息。執行“Get-Wmiobject Win32_Processor|fl*”命令,會顯示該CPU的詳細信息。執行“Get-WmiObject-Class Win32_Logicaldisk”命令,顯示基本磁盤信息。也可以執行“Get-WmiObject-ClassWin32_Logicaldisk|where{$_.DriveType-eq 3)”等命令,來篩選指定類型的磁盤信息。

執行“Get-WmiObject-Query"select*from Win32_LogicalDisk Where DriveType=3"|fl*”命令,來顯示硬盤信息。如果將其中的“DriveType”的值修改為0/2/4/5/6,可以顯示未知/移動存儲/共享盤/光盤/內存盤等磁盤信息。也可以執行“Get-WmiObject-Query"select*from Win32_LogicalDiskWhere DriveType=3"|Select-Object@{n="盤符";e={$_.name),@{n="自由空間";e={$_.freespace}/1GB-as[int]}”命令,來自定義顯示的磁盤信息。

如果想查看目標主機的常用信息,例如名稱、運行時間等,可以執行“Get-WmiObject-Class Win32_OperatingSystem-ComputerNameserverl.xxx.com|Select-Object@{n='計算機名稱';e={$_.PSComputername}},@{n="安裝時間";e={$_.ConvertToDateTime($_.InstalIDate)}},@{n="啟動時間";e={$_.ConvertToDateTime($_.LastBootUpTime)}},@{n="系統版本";e={$_.Caption}}”命令,來獲取相關的信息。

猜你喜歡
本本磁盤網卡
聯網全靠它 認識筆記本的無線網卡
它的好 它的壞 詳解動態磁盤
解決Windows磁盤簽名沖突
Windows系統下動態磁盤卷的分析與研究
挑戰Killer網卡Realtek網游專用Dragon網卡
克隆硬盤很簡單
論持久戰
李本本的故事
李本本的故事
USB故障又一原因
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合