一句話查更新、看網絡……你應該知道的 8 條「神秘代碼」

2023-08-10   少數派

原標題:一句話查更新、看網絡……你應該知道的 8 條「神秘代碼」

和傳統中對桌面作業系統的印象有所不同的是,無論是 macOS 還是 Windows 都有著相當豐富完善的命令行工具供我們選擇,有時候在終端中輸入一條命令,就可以批量高效率的完成一系列原本圖形化介面下繁瑣的系統操作,從而達到事半功倍的效果。

而說到桌面系統的命令行工具,在現代的 macOS 中我們依舊可以使用那些好用高效的 UNIX 工具,至於 Windows,雖然大家的印象中更多的是其圖形化操作介面,但隨著這麼多年的系統發展,也提供了種類繁多且執行高效的命令行工具,其中不乏那些非常實用的命令行工具,本篇教程將幫助你通過一系列的實用命令行工具,更好的使用 Windows 作業系統。

systeminfo- 參看系統配置信息

安裝好作業系統後,這台嶄新的計算機詳細配置是?誠然通過一些第三方的軟體可以詳細的看到具體的系統配置信息,不過 Windows 系統中已經自帶的一個非常強大的系統配置信息工具——systeminfo,通過這個命令行工具,你可以在終端中看到這台計算機及其作業系統的詳細配置信息,包括作業系統配置、安全信息、產品 ID 和硬體屬性(例如 RAM、磁碟空間和網卡)。

默認情況下,打開 Windows 的任何一種終端(CMD 或者 Powershell),不加上任何參數直接輸入systeminfo後,終端就會自動列印出當前設備的作業系統配置、安全信息、產品 ID 和硬體屬性,如果系統安裝的安全更新,也會顯示出當前已經安裝的安全更新列表。

當然這個命令行工具還可以查看本網絡下其他計算機的硬體配置,當然這裡你需要知道本網絡下其他計算機名, 比如同一網絡下有一台名為 superman 的計算機,那麼要想在你的電腦上查看這台電腦的配置,就輸入命令:

systeminfo /s srvmain

▍winget:用命令行更新你的軟體

雖然微軟近些年開始逐步開放了自己的應用商店,開始允許傳統的 win32 軟體通過 Microsoft Store 進行軟體分發,但相比海量的 Windows 軟體,上架 Microsoft Store 的應用依舊少數。那麼該如何管理這些第三方的 Windows 軟體呢?

或許是從 Linux 發行版的軟體包管理上找到了靈感,也或許是 macOS 的第三方包管理器 homebrew 給出的啟發,微軟也同樣祭出了其基於命令行的軟體包管理工具:winget,當然相比於 homebrew 和其他 Windows 平台類似的包管理工具,winget 的優勢在於這個是微軟自己推出的包管理工具,因此管理和使用上自然有著得天獨厚的優勢。

而使用上其實也非常簡單,其基本語法上和很多桌面系統的包管理工具類似,首先打開你的 Windows 終端,如果想要查找某一款軟體是否在軟體源中,可以輸入:

winget search

如果找到了類似名字的軟體就會在終端中返回結果,如果想要安裝這個軟體,就可以選擇複製軟體的 ID(在命令行中使用滑鼠選中軟體 ID 然後點擊滑鼠右鍵就可以複製),然後輸入:

winget install

如果軟體需要管理員權限才能安裝,這時候會彈出 UAE 對話框選擇允許即可。軟體安裝完成之後會在終端返回軟體安裝狀態。如果想要知道某一款軟體的詳細信息,那麼可以輸入下面的這個命令:

winget show

那麼電腦上到底安裝了多少軟體呢?這裡可以使用下面的這個命令將軟體列出來。

winget list

習慣使用 winget 來進行 Windows 上應用程式的管理還有一個好處,你可以進行統一的軟體更新而無需再手動到軟體主頁下載安裝,比如當你需要對安裝到系統中所有的軟體包檢查是否有更新時,就只需要輸入:

winget upgrade

稍等片刻就會列出當前系統下可以更新的軟體包列表,包括軟體 ID 、版本、可用(升級版本)以及軟體源,如果想要升級其中的一款軟體,那麼只需要輸入:

winget upgrade

winget upgrade --all #升級所有可以升級的包

當然 winget 還有很多有趣且實用的命令,你可以輸入:winget --help 來查找命令,有了這樣的工具,你在管理安裝在本地的軟體會更加得心應手。

▍用終端命令檢查系統更新

相比於 Linux 系統可以通過包管理系統實現系統更新升級,在 Windows 上就不那麼方便快捷了,不過隨著 PowerShell 的進化,現在也可以直接使用命令行來執行系統級別安全更新。

不過這個方案首先需要安裝一個第三方的 PowerShell Module——Windows Update module for Windows Powershell[1],這裡我們先在在 Windows 開始徽標上點擊滑鼠右鍵,在快捷菜單中打開終端管理員,然後輸入如下命令來安裝這個名為「Windows Update module for Windows Powershell」的模塊:

Install-Module PSWindowsUpdate

根據步驟確認後,我們就可以使用如下命令來連接 Windows Update 並檢查是否有系統安全更新了:

Get-WindowsUpdate

如果有相應的系統更新,則可以直接執行下面這個命令來進行安裝:

Install-WindowsUpdate

如果你想要查看當前計算機已經安裝的更新的詳細信息,比如說更新標題、描述、HotFixID、安裝日期等,可以輸入下面這個命令:

wmic qfe list

Process cmdlet:命令行方式管理系統進程

作為一個 Windows 系統使用的老手,熟練的打開任務管理器然後結束掉某些程序的進程可謂是輕車熟路,但這些操作都依賴圖形化的介面——如果你遇到了系統嚴重卡頓到無法打開任務管理器的情況,那麼使用命令行來管理系統進程或許會更加高效一些。

在 Windows 終端(這裡特指 PowerShell)中,你可以使用 Process cmdlet 來查看/管理系統進程,比如說列出當前系統中的所有進程,只需要輸入:

Get-Process

或者輸入 Get-Process 的別名:

ps

這時候終端就會返回當下的所有進程的列表。注意我們主要關注的是列表中的兩個項目,一個是 ID ,一個是 ProcessName,比如說我需要查看某個 ID 對應的進程信息(比如當前的這個 ID 為 3604 的進程),那麼輸入命令:

Get-Process -id 3604

或者:

ps -id 3604

當然我們也可以從名字入手,比如列出所有進程名以 Adobe 開頭的進程:

Get-Process -Name Adobe*

或者

ps -Name Adobe*

既然我們可以定位進程,那麼接下來最重要的就是管理進程(事實上很多時候我們也是通過任務管理器來結束進程),比如最常用的結束進程,這裡我需要當下結束 Excel 程序的進程,那麼就輸入這個命令:

Stop-Process -Name EXCEL

或者

kill -Name EXCEL

這裡結束任務不會給出任何提醒,所以為了避免誤操作,也可以加上一個提示的參數,只有輸入 Y 才能結束進程:

Stop-Process -Name EXCEL -Confirm

或者

kill -Name EXCEL -Confirm

有些時候我們甚至還能會遇到很多程序或者進程無響應的情況,那麼這裡也有一鍵殺掉所有無響應進程的辦法,就是輸入下面這條命令,會將系統中標記為無響應的進程全部殺掉。

Get-Process | Where-Object -Filter {$_.Responding -eq $false} | Stop-Process

Start-Process:用命令行的方式打開文件或者打開程序

雖然我們習慣於通過圖形化的形式來對文件進行管理,或者直覺上使用雙擊圖標的方式啟動程序,但事實上在 Windows 上我們可以使用命令行的形式快速打開文件或者程序。

比如我想要打開放在桌面的 Markdown 文檔,那麼這裡我們依舊使用的是 Windows 終端(PowerShell),然後輸入以下命令,使用默認程序來打開 Markdown 文檔:

Start-Process -Filepath "C:\Users\liuxi\Desktop\opera.md"

或者使用別名:

start "C:\Users\liuxi\Desktop\opera.md"

執行後會使用我的默認 Markdown 編輯器(Typora)來打開這個文檔,當然這個方法還可以用來打開特定的文件夾,比如說我要使用文件資源管理器打開桌面文件夾,那麼輸入下面這個命令:

Start-Process -Filepath "C:\Users\liuxi\Desktop"

或者使用別名

Start "C:\Users\liuxi\Desktop"

這時候就會直接調用文件資源管理器來打開桌面這個文件夾,那麼能不能執行軟體呢?比如說打開記事本這個應用?當然可以,直接輸入以下命令:

Start-Process -Filepath "notepad.exe"

或者使用別名:

Start "notepad.exe"

當然這個是系統原生的應用,對於第三方應用,執行的話需要具體的程序路徑,比如說打開我的 Steam 客戶端,輸入的命令就需要改成:

Start-Process -Filepath "C:\Program Files (x86)\Steam\Steam.exe"

或者

Start "C:\Program Files (x86)\Steam\Steam.exe"

通過打開命令,還可以實現一個意想不到的功能:給終端提權,比如說有時候需要用管理員身份啟動 PowerShell,那麼就輸入以下的命令:

Start-Process -FilePath "Powershell" -Verb RunAs

或者更短的寫法:

Start "Powershell" -V RunAs

這時候會以管理員身份打開一個新的 PowerShell 進程,省去了通過圖形化介面點擊操作的麻煩。

使用 PowerShell 來管理網絡

雖然在 Windows 有相當好用的圖形化工具來管理網絡,但命令行工具則更為高效,以往我們都會使用 CMD 命令(ping 命令或者 ipconfig)來進行管理,既然到了 PowerShell 的時代,那麼選擇更高級的工具自然也就順勢而為。

比如你需要列出當前這台電腦的 IP 地址,使用 PowerShell 就輸入如下命令:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true | Select-Object -ExpandProperty IPAddress

需要注意的是,這個命令返回後會呈現的包括 IPv4 和 IPv6 的地址,並且輸出的為活動 IP(如果是 CMD 的 ipconfig 命令會把其他適配器的不活動 IP 都呈現列印出來)。那麼如果要列出具體某個網絡適配器的 IP 配置數據,就需要輸入下面這個命令:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true

列印結果就是顯示當前活動的網絡適配器是什麼,網絡服務名是什麼以及是否是 DHCP 等等。

作為最為常用的網絡工具,在 PowerShell 中也可以使用 ping 命令,比如說我想要測試下和 223.5.5.5 這個 IP 是否連通,那麼就執行下面這段命令:

Get-CimInstance -Class Win32_PingStatus -Filter "Address='223.5.5.5'" | Format-Table -Property Address,ResponseTime,StatusCode -Autosize

如果返回的 StatusCode 為 0 就表示當前網絡可以正常和 223.5.5.5 連通。而如果想要查看當前設備下有哪些網絡適配器,則可以輸入下面這條命令:

Get-CimInstance -Class Win32_NetworkAdapter

這會將當前的網絡適配器列表列印到終端。

clip:將命令輸出從命令行重定向到 Windows 剪貼板

和圖形介面上的功能類似,在 Windows 上也可以通過命令來將文本重定向到剪切板,這裡可以是指定的操作命令輸出的數據,也可以就是文件內容數據。

比如我們需要將當前目錄列表發送到剪切板,那麼就在 Windows 終端中,直接輸入以下命令:

dir | clip

這時候剪切板中記錄下了當前目錄的列表的文本信息(你可以使用 Windows 徽標鍵 + V 打開剪切板查看)。當然我們也可以將文本文檔中的數據放到剪切板中,比如當前系統桌面上的放置了一個名為 2. txt 的文檔,那麼輸入以下命令可以將這個文檔中內容傳輸到剪切板中:

clip < 2.txt

同樣執行完成之後,用 Windows 徽標鍵 + V 打開剪切板就可以看到最新剪切板文本內容就是 2.txt 的數據內容。

Powercfg:用命令行管理計算機電源

相比於在圖形介面上進行系統電源管理,使用命令行進行電源管理一大好處的就是步驟簡單而且效率極高,而使用的核心命令就是 Powercfg,比如現在我們列出當前計算機中的所有電源方案,這裡只需要打開 Windows 終端,然後輸入如下命令:

powercfg /list

可以看到當前計算中包含有三種可選的電源方案,其中有 * 標記的就是當前正在使用的方案。那麼如果需要激活某個電源方案(比如激活高性能的電源方案),則輸入如下命令進行方案的切換:

powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c

這時候再輸入 powercfg /list,就會發現激活的方案變成了高性能的那種。對於某一個電源方案,具體是哪些內容,則可以輸入下面這個命令來查看:

powercfg /query 381b4222-f694-41f0-9685-ff5bb260df2e

這個命令可以查看當前電源方案下的各個子方案的設置情況,如果想要修改其中的設置,那麼就需要用到 /change 語法,比如說如果需要修改螢幕在接電時候的空閒關閉時間,將其設置為 5 分鐘後關閉,那麼輸入命令為:

powercfg /change monitor-timeout-ac 5

有時候我們需要對設備進行喚醒或者禁用睡眠的操作,在命令行中執行也更為簡單直接,比如啟用休眠功能,就輸入命令(使用管理員權限打開終端):

powercfg /hibernate on

對應的關閉休眠功能,命令就是:

powercfg /hibernate off

在平時計算機使用過程中,有時候經常會遇到比如電池使用情況,比如睡眠時候發現還在耗電等等,這裡我們可以輸入這個命令來生成一份電池狀態報告文檔:

powercfg /batteryreport

這個命令就可以詳細記錄電池使用的諸多細節,幫助你找到那些進程是讓電池大量耗電的罪魁禍首。同樣,由於現在微軟的新型待機常常會存在各種問題(盒蓋之後設備並不休眠),也可以通過以下命令來生成待機質量報告:

powercfg /sleepstudy

這樣我們就可以從報告中直觀的看出到底是哪個系統項導致設備出現了無法待機的情況,好方便我們及時進行調整。

結語

相比於 Linux 和 macOS,近些年的 Windows 也一直都在完善自己的命令行工具,雖然對比 UNIX Like 的命令行工具顯得不是那麼的全面,但有了 PowerShell 的加持,Windows 的命令行工具也開始全面革新,通過簡單的語法就可以高效準確地設置諸多功能和執行操作,當然也歡迎你在評論區分享你經常使用的 Windows 命令行工具,告訴我們你是如何用好 Windows 的。

相關連結

[1] Windows Update module for Windows Powershell:

https://www.powershellgallery.com/packages/PSWindowsUpdate/2.2.0.3

原文連結:

https://sspai.com/post/81787?utm_source=wechat&utm_medium=social

作者:化學心情下2

責編:廣陵止息

/ 更多熱門文章 /