微軟官方Powershell文檔:https://learn.microsoft.com/zh-cn/powershell/
命令詳細(xì)說(shuō)明,在PDF的最后面:
一、Powershell及命令簡(jiǎn)介
PowerShell 是一種用于自動(dòng)化的命令行 shell 和腳本語(yǔ)言。
Wikipedia 包含以下關(guān)于 shell 的描述:
shell 通過(guò)提示用戶輸入、解釋其輸入,然后處理基礎(chǔ)操作系統(tǒng)的輸出來(lái)管理用戶系統(tǒng)交互(非常類似于讀取–求值–打印循環(huán) [即 REPL])。
與其他 shell(如 bash 或 cmd.exe)類似,PowerShell 使你能夠在系統(tǒng)上運(yùn)行任何可用的命令,而不僅僅是 PowerShell 命令。
PowerShell 命令稱為 cmdlet
(讀作 command-let)。 cmdlet 是 PowerShell 命令,而不是獨(dú)立的可執(zhí)行文件。 如果不先運(yùn)行 PowerShell,則 PowerShell 命令無(wú)法在其他 shell 中運(yùn)行。
PowerShell 是新式命令 shell,其中包括其他常用 shell 的最佳功能。 與大多數(shù)僅接受并返回文本的 shell 不同,PowerShell 接受并返回 .NET
對(duì)象。 shell 有多項(xiàng)功能可用于優(yōu)化交互式用戶體驗(yàn)。
1.1 命令格式
PowerShell 的命令遵循一個(gè)特定的命名約定,即“動(dòng)詞-名詞”格式。這種結(jié)構(gòu)使得命令易于閱讀和理解。以下是 PowerShell cmdlet 的組成部分:
-
動(dòng)詞 (Verb): 描述 cmdlet 執(zhí)行的操作。例如,
Get
、Set
、New
、Remove
等。 -
名詞 (Noun): 描述 cmdlet 操作的對(duì)象或資源。例如,
Item
、Service
、Process
等。 -
參數(shù) (Parameters): 提供給 cmdlet 的額外信息,以影響其操作。參數(shù)通常以
-
開(kāi)頭,例如-Name
、-Path
等。 -
參數(shù)值 (Parameter Values): 跟在參數(shù)后面的具體值。例如,在
Get-Service -Name "wuauserv"
中,"wuauserv"
是-Name
參數(shù)的值。
以下是一些 PowerShell cmdlet 的示例:
-
Get-Service
: 獲取系統(tǒng)上運(yùn)行的所有服務(wù)的列表。 -
Get-Process
: 獲取當(dāng)前運(yùn)行的所有進(jìn)程的列表。 -
New-Item
: 創(chuàng)建一個(gè)新的項(xiàng)目,如文件或文件夾。 -
Remove-Item
: 刪除一個(gè)項(xiàng)目,如文件或文件夾。
此外,PowerShell 還支持使用管道 (|
) 將一個(gè) cmdlet 的輸出傳遞給另一個(gè) cmdlet 作為輸入。例如,Get-Process | Where-Object {$_.CPU -gt 100}
會(huì)獲取所有 CPU 使用率超過(guò) 100 的進(jìn)程。
1.2 命令的別名
PowerShell 中的許多命令(cmdlet)都有別名。別名是一個(gè)或多個(gè) cmdlet 的短名稱,它們提供了一種快速鍵入常用命令的方法,而不必完整地鍵入整個(gè) cmdlet 名稱。
例如:
-
Get-Command
的別名是gcm
。 -
Get-Help
的別名是help
或man
。 -
Get-Process
的別名是ps
。 -
Get-Item
的別名是gi
。
你可以使用 Get-Alias
cmdlet 來(lái)查看所有可用的別名。例如,要查看 Get-Command
的所有別名,你可以運(yùn)行:
Get-Alias -Definition Get-Command
如果你想查看所有的別名及其對(duì)應(yīng)的 cmdlet,你可以簡(jiǎn)單地運(yùn)行:
Get-Alias
此外,你還可以使用 Set-Alias
cmdlet 來(lái)創(chuàng)建自己的別名。例如,如果你想為 Get-Service
創(chuàng)建一個(gè)別名 gs
, 你可以運(yùn)行:
Set-Alias -Name gs -Value Get-Service
這樣,每次你鍵入 gs
時(shí),它都會(huì)運(yùn)行 Get-Service
cmdlet。
此外,可以使用Tab補(bǔ)全命令。
二、cmdlet別名
這些別名是7.36
版本中,使用Get-Alias
命令獲取的。
有少許別名可能與Linux bash命令相同,但參數(shù)一般不同。
別名 (Alias) | cmdlet 名稱 (Cmdlet Name) | 作用 (Description) |
---|---|---|
? | Where-Object | 過(guò)濾對(duì)象 |
% | ForEach-Object | 對(duì)每個(gè)對(duì)象執(zhí)行操作 |
ac | Add-Content | 添加內(nèi)容到文件 |
cat | Get-Content | 獲取文件內(nèi)容 |
cd, chdir | Set-Location | 更改當(dāng)前位置 |
clc | Clear-Content | 清除內(nèi)容 |
clear, cls | Clear-Host | 清除控制臺(tái)輸出 |
clhy | Clear-History | 清除命令歷史 |
cli | Clear-Item | 清除項(xiàng)目 |
clp | Clear-ItemProperty | 清除項(xiàng)目屬性 |
clv | Clear-Variable | 清除變量 |
cnsn | Connect-PSSession | 連接到 PSSession |
compare | Compare-Object | 比較對(duì)象 |
copy, cp, cpi | Copy-Item | 復(fù)制項(xiàng)目 |
cpp | Copy-ItemProperty | 復(fù)制項(xiàng)目屬性 |
cvpa | Convert-Path | 轉(zhuǎn)換路徑 |
dbp | Disable-PSBreakpoint | 禁用斷點(diǎn) |
del, erase | Remove-Item | 刪除項(xiàng)目 |
diff | Compare-Object | 比較對(duì)象 |
dir | Get-ChildItem | 獲取子項(xiàng)目列表 |
dnsn | Disconnect-PSSession | 斷開(kāi) PSSession |
ebp | Enable-PSBreakpoint | 啟用斷點(diǎn) |
echo | Write-Output | 輸出內(nèi)容 |
epal | Export-Alias | 導(dǎo)出別名 |
epcsv | Export-Csv | 導(dǎo)出為 CSV |
erase | Remove-Item | 刪除指定項(xiàng)目 |
etsn | Enter-PSSession | 進(jìn)入 PSSession |
exsn | Exit-PSSession | 退出 PSSession |
fc | Format-Custom | 自定義格式化 |
fhx | Format-Hex | 格式化為十六進(jìn)制 |
fl | Format-List | 列表格式化 |
foreach | ForEach-Object | 對(duì)每個(gè)對(duì)象執(zhí)行操作 |
ft | Format-Table | 表格格式化 |
fw | Format-Wide | 寬格式化 |
gal | Get-Alias | 獲取別名 |
gbp | Get-PSBreakpoint | 獲取斷點(diǎn) |
gc | Get-Content | 獲取內(nèi)容 |
gcb | Get-Clipboard | 獲取剪貼板內(nèi)容 |
gci | Get-ChildItem | 獲取子項(xiàng)目 |
gcm | Get-Command | 獲取命令 |
gcs | Get-PSCallStack | 獲取調(diào)用堆棧 |
gdr | Get-PSDrive | 獲取驅(qū)動(dòng)器 |
gerr | Get-Error | 獲取錯(cuò)誤 |
ghy | Get-History | 獲取歷史 |
gi | Get-Item | 獲取項(xiàng)目 |
gin | Get-ComputerInfo | 獲取計(jì)算機(jī)信息 |
gjb | Get-Job | 獲取作業(yè) |
gl | Get-Location | 獲取當(dāng)前位置 |
gm | Get-Member | 獲取成員 |
gmo | Get-Module | 獲取模塊 |
gp | Get-ItemProperty | 獲取項(xiàng)目屬性 |
gps | Get-Process | 獲取進(jìn)程 |
gpv | Get-ItemPropertyValue | 獲取項(xiàng)目屬性值 |
group | Group-Object | 對(duì)象分組 |
gsn | Get-PSSession | 獲取 PSSession |
gsv | Get-Service | 獲取服務(wù) |
gtz | Get-TimeZone | 獲取時(shí)區(qū) |
gu | Get-Unique | 獲取唯一值 |
gv | Get-Variable | 獲取變量 |
h, history | Get-History | 獲取歷史 |
icm | Invoke-Command | 調(diào)用命令 |
iex | Invoke-Expression | 調(diào)用表達(dá)式 |
ihy | Invoke-History | 調(diào)用歷史命令 |
ii | Invoke-Item | 調(diào)用項(xiàng)目 |
ipal | Import-Alias | 導(dǎo)入別名 |
ipcsv | Import-Csv | 導(dǎo)入 CSV |
ipmo | Import-Module | 導(dǎo)入模塊 |
irm | Invoke-RestMethod | 調(diào)用 REST 方法 |
iwr | Invoke-WebRequest | 調(diào)用 Web 請(qǐng)求 |
kill | Stop-Process | 停止進(jìn)程 |
ls | Get-ChildItem | 獲取子項(xiàng)目 |
man | help | 獲取幫助 |
md | mkdir | 創(chuàng)建目錄 |
measure | Measure-Object | 測(cè)量對(duì)象 |
mi | Move-Item | 移動(dòng)項(xiàng)目 |
mount | New-PSDrive | 創(chuàng)建新驅(qū)動(dòng)器 |
move | Move-Item | 移動(dòng)項(xiàng)目 |
mp | Move-ItemProperty | 移動(dòng)項(xiàng)目屬性 |
mv | Move-Item | 移動(dòng)項(xiàng)目 |
nal | New-Alias | 創(chuàng)建新別名 |
ndr | New-PSDrive | 創(chuàng)建新驅(qū)動(dòng)器 |
ni | New-Item | 創(chuàng)建新項(xiàng)目 |
nmo | New-Module | 創(chuàng)建新模塊 |
nsn | New-PSSession | 創(chuàng)建新 PSSession |
nv | New-Variable | 創(chuàng)建新變量 |
ogv | Out-GridView | 輸出到網(wǎng)格視圖 |
oh | Out-Host | 輸出到主機(jī) |
popd | Pop-Location | 彈出位置 |
ps | Get-Process | 獲取進(jìn)程 |
pushd | Push-Location | 推送位置 |
pwd | Get-Location | 獲取當(dāng)前位置 |
r | Invoke-History | 調(diào)用歷史命令 |
rbp | Remove-PSBreakpoint | 刪除斷點(diǎn) |
rcjb | Receive-Job | 接收作業(yè) |
rcsn | Receive-PSSession | 接收 PSSession |
rd | Remove-Item | 刪除項(xiàng)目 |
rdr | Remove-PSDrive | 刪除驅(qū)動(dòng)器 |
ren | Rename-Item | 重命名項(xiàng)目 |
ri | Remove-Item | 刪除項(xiàng)目 |
rjb | Remove-Job | 刪除作業(yè) |
rm, rmdir | Remove-Item | 刪除項(xiàng)目 |
rmo | Remove-Module | 刪除模塊 |
rni | Rename-Item | 重命名項(xiàng)目 |
rnp | Rename-ItemProperty | 重命名項(xiàng)目屬性 |
rp | Remove-ItemProperty | 刪除項(xiàng)目屬性 |
rsn | Remove-PSSession | 刪除 PSSession |
rv | Remove-Variable | 刪除變量 |
rvpa | Resolve-Path | 解析路徑 |
sajb | Start-Job | 開(kāi)始作業(yè) |
sal | Set-Alias | 設(shè)置別名 |
saps | Start-Process | 開(kāi)始進(jìn)程 |
sasv | Start-Service | 開(kāi)始服務(wù) |
sbp | Set-PSBreakpoint | 設(shè)置斷點(diǎn) |
scb | Set-Clipboard | 設(shè)置剪貼板內(nèi)容 |
select | Select-Object | 選擇對(duì)象 |
set | Set-Variable | 設(shè)置變量 |
shcm | Show-Command | 顯示命令 |
si | Set-Item | 設(shè)置項(xiàng)目 |
sl | Set-Location | 設(shè)置位置 |
sleep | Start-Sleep | 開(kāi)始休眠 |
sls | Select-String | 選擇字符串 |
sort | Sort-Object | 排序?qū)ο?/td> |
sp | Set-ItemProperty | 設(shè)置項(xiàng)目屬性 |
spjb | Stop-Job | 停止作業(yè) |
spps | Stop-Process | 停止進(jìn)程 |
spsv | Stop-Service | 停止服務(wù) |
start | Start-Process | 開(kāi)始進(jìn)程 |
stz | Set-TimeZone | 設(shè)置時(shí)區(qū) |
sv | Set-Variable | 設(shè)置變量 |
tee | Tee-Object | 分叉對(duì)象 |
type | Get-Content | 獲取內(nèi)容 |
where | Where-Object | 過(guò)濾對(duì)象 |
wjb | Wait-Job | 等待作業(yè) |
write | Write-Output | 輸出內(nèi)容 |
三、cmdlet分類介紹
如果你想了解一個(gè)命令的說(shuō)明和參數(shù),可以使用Get-Help 命令名稱 的格式獲取,Get-Help的別名是man,例如你要獲取Get-Help這個(gè)命令的幫助文檔,可以使用:
man man
幫助文檔是英文的,如果你有困難,可以去文章開(kāi)頭的微軟中國(guó)官網(wǎng)搜索該命令,有中文的詳細(xì)解釋。
3.1 基礎(chǔ)命令
1. Get-Command
Get-Command
是一個(gè)非常有用的 cmdlet,它可以列出所有可用的 cmdlet、函數(shù)、腳本和別名。例如,要查找與進(jìn)程相關(guān)的所有命令,可以使用:
Get-Command *process*
2. Get-Help
Get-Help
cmdlet 為用戶提供了關(guān)于 cmdlet 和函數(shù)的詳細(xì)信息。例如,要獲取 Get-Process
cmdlet 的幫助信息,可以使用:
Get-Help Get-Process
此外,-Examples
、-Detailed
和 -Full
參數(shù)可以提供更多的信息。
3. Set-Variable
Set-Variable
cmdlet 允許用戶創(chuàng)建或修改一個(gè)變量。例如,要?jiǎng)?chuàng)建一個(gè)名為 “myVar” 的變量并為其賦值 “Hello, PowerShell!”,可以使用:
Set-Variable -Name myVar -Value "Hello, PowerShell!"
4. Get-Variable
與 Set-Variable
相對(duì)應(yīng),Get-Variable
cmdlet 可以獲取一個(gè)或多個(gè)變量的值。例如,要獲取 “myVar” 的值,可以使用:
Get-Variable myVar
5. Remove-Variable
Remove-Variable
cmdlet 允許用戶刪除一個(gè)或多個(gè)變量。例如,要?jiǎng)h除 “myVar” 變量,可以使用:
Remove-Variable myVar
6. Clear-Variable
Clear-Variable
cmdlet 用于清除變量的值,但不刪除變量本身。例如,要清除 “myVar” 變量的值,可以使用:
Clear-Variable myVar
3.2 管理命令
1. Get-Process
Get-Process
cmdlet 允許用戶獲取當(dāng)前運(yùn)行的進(jìn)程信息。
Get-Process
這將列出所有當(dāng)前運(yùn)行的進(jìn)程。你還可以通過(guò)指定進(jìn)程名稱來(lái)獲取特定的進(jìn)程信息,例如:
Get-Process -Name notepad
2. Stop-Process
Stop-Process
cmdlet 用于終止一個(gè)或多個(gè)進(jìn)程。例如,要終止名為 “notepad” 的進(jìn)程,可以使用:
Stop-Process -Name notepad
3. Restart-Service
Restart-Service
cmdlet 允許用戶重新啟動(dòng)一個(gè)或多個(gè)服務(wù)。例如,要重新啟動(dòng) “wuauserv” 服務(wù)(Windows Update 服務(wù)),可以使用:
Restart-Service -Name wuauserv
4. Get-Service
Get-Service
cmdlet 提供了關(guān)于系統(tǒng)服務(wù)的信息。它可以列出所有服務(wù)或特定服務(wù)的狀態(tài)。
Get-Service
要獲取特定服務(wù)的信息,例如 “wuauserv”,可以使用:
Get-Service -Name wuauserv
5. Start-Service 和 Stop-Service
這兩個(gè) cmdlet 分別用于啟動(dòng)和停止服務(wù)。例如,要停止 “wuauserv” 服務(wù),可以使用:
Stop-Service -Name wuauserv
要啟動(dòng)該服務(wù),可以使用:
Start-Service -Name wuauserv
6. Get-EventLog
Get-EventLog
cmdlet 允許用戶讀取和查詢事件日志。例如,要獲取系統(tǒng)日志中的最近 10 條事件,可以使用:
Get-EventLog -LogName System -Newest 10
3.3 實(shí)用工具命令
PowerShell 的實(shí)用工具命令提供了一系列功能,使用戶能夠進(jìn)行文本和數(shù)據(jù)處理、文件操作、數(shù)據(jù)轉(zhuǎn)換等任務(wù)。這些命令非常適合日常的數(shù)據(jù)處理和分析任務(wù)。以下是一些常用的實(shí)用工具命令及其功能介紹:
1. Sort-Object
Sort-Object
cmdlet 用于對(duì)對(duì)象進(jìn)行排序。例如,要按名稱對(duì)進(jìn)程進(jìn)行排序,可以使用:
Get-Process | Sort-Object -Property ProcessName
2. Measure-Object
Measure-Object
cmdlet 用于計(jì)算對(duì)象的數(shù)量、平均值、總和等。例如,要計(jì)算文本文件中的行數(shù),可以使用:
Get-Content -Path "C:\path\to\file.txt" | Measure-Object -Line
3. ConvertTo-Json 和 ConvertFrom-Json
這兩個(gè) cmdlet 用于將對(duì)象轉(zhuǎn)換為 JSON 格式,或從 JSON 格式轉(zhuǎn)換為對(duì)象。例如,要將進(jìn)程列表轉(zhuǎn)換為 JSON 格式,可以使用:
Get-Process | ConvertTo-Json
反之,要從 JSON 格式轉(zhuǎn)換為 PowerShell 對(duì)象,可以使用:
$jsonData | ConvertFrom-Json
4. Select-Object
Select-Object
cmdlet 允許用戶選擇對(duì)象的特定屬性。例如,要僅選擇進(jìn)程的名稱和 ID,可以使用:
Get-Process | Select-Object -Property ProcessName, Id
5. Where-Object
Where-Object
cmdlet 用于過(guò)濾對(duì)象。例如,要選擇使用內(nèi)存超過(guò) 100 MB 的進(jìn)程,可以使用:
Get-Process | Where-Object {$_.WorkingSet64 -gt 100MB}
6. Out-File
Out-File
cmdlet 用于將輸出重定向到文件。例如,要將進(jìn)程列表保存到文件中,可以使用:
Get-Process | Out-File -Path "C:\path\to\file.txt"
7. Compare-Object
Compare-Object
cmdlet 用于比較兩個(gè)對(duì)象集合的差異。例如,要比較兩個(gè)文本文件的內(nèi)容,可以使用:
Compare-Object $(Get-Content -Path "C:\path\to\file1.txt") $(Get-Content -Path "C:\path\to\file2.txt")
3.4 提供程序命令
PowerShell 提供程序是一種特殊的適配器,使得各種數(shù)據(jù)存儲(chǔ)(如文件系統(tǒng)、注冊(cè)表和證書存儲(chǔ))可以像文件系統(tǒng)一樣被訪問(wèn)。這意味著你可以使用相同的命令(如 Get-Item
、Set-Location
等)來(lái)操作這些不同的數(shù)據(jù)源。以下是與提供程序相關(guān)的一些常用命令及其功能介紹:
1. Get-PSProvider
Get-PSProvider
cmdlet 顯示所有已加載的 PowerShell 提供程序。執(zhí)行此命令將列出如 FileSystem
、Registry
、Certificate
等提供程序。
Get-PSProvider
2. Get-PSDrive
Get-PSDrive
cmdlet 列出所有當(dāng)前會(huì)話中的驅(qū)動(dòng)器,包括由提供程序支持的驅(qū)動(dòng)器。例如,除了常規(guī)的文件系統(tǒng)驅(qū)動(dòng)器(如 C:、D:)之外,你還可能看到注冊(cè)表驅(qū)動(dòng)器(如 HKLM、HKCU)。
Get-PSDrive
3. New-PSDrive
New-PSDrive
cmdlet 允許你創(chuàng)建一個(gè)新的 PowerShell 驅(qū)動(dòng)器。例如,你可以創(chuàng)建一個(gè)指向特定注冊(cè)表路徑的新驅(qū)動(dòng)器:
New-PSDrive -Name HKMyCustom -PSProvider Registry -Root HKEY_CURRENT_USER\Software\MyCustomPath
4. Remove-PSDrive
Remove-PSDrive
cmdlet 用于刪除之前使用 New-PSDrive
創(chuàng)建的驅(qū)動(dòng)器。
Remove-PSDrive -Name HKMyCustom
5. Set-Location 和 Get-Location
這兩個(gè) cmdlet 用于導(dǎo)航到不同的 PowerShell 驅(qū)動(dòng)器和路徑。Set-Location
(或其別名 cd
)用于更改當(dāng)前位置,而 Get-Location
(或其別名 pwd
)用于獲取當(dāng)前位置。
例如,要導(dǎo)航到之前創(chuàng)建的注冊(cè)表驅(qū)動(dòng)器,可以使用:
Set-Location -Path HKMyCustom:
然后,使用 Get-Location
可以確認(rèn)你當(dāng)前的位置。
6. Get-Item 和 Set-Item
這兩個(gè) cmdlet 用于獲取和設(shè)置提供程序位置的項(xiàng)。例如,要獲取注冊(cè)表鍵的值,可以使用:
Get-Item -Path HKMyCustom:\SomeKeyName
要設(shè)置該鍵的值,可以使用:
Set-Item -Path HKMyCustom:\SomeKeyName -Value "NewValue"
3.5 模塊和包命令
在 PowerShell 中,模塊是一個(gè)包含多個(gè)函數(shù)、cmdlet、提供程序和變量的包。這些模塊可以被導(dǎo)入到 PowerShell 會(huì)話中,以增強(qiáng)其功能。包則是通過(guò)包管理器(如 PowerShellGet)分發(fā)的模塊或腳本。以下是與模塊和包相關(guān)的一些常用命令及其功能介紹:
1. Import-Module
Import-Module
cmdlet 允許你導(dǎo)入一個(gè)模塊,使其在當(dāng)前會(huì)話中可用。例如,要導(dǎo)入名為 “MyModule” 的模塊,可以使用:
Import-Module -Name MyModule
2. Remove-Module
Remove-Module
cmdlet 用于從當(dāng)前會(huì)話中卸載模塊。例如,要卸載 “MyModule”,可以使用:
Remove-Module -Name MyModule
3. Get-Module
Get-Module
cmdlet 顯示已導(dǎo)入或可用的模塊。使用 -ListAvailable
參數(shù)可以列出所有可用的模塊:
Get-Module -ListAvailable
4. Install-Module
Install-Module
cmdlet 允許你從 PowerShell 庫(kù)或其他存儲(chǔ)庫(kù)安裝模塊。例如,要安裝 “PSReadline” 模塊,可以使用:
Install-Module -Name PSReadline
5. Uninstall-Module
Uninstall-Module
cmdlet 用于從系統(tǒng)中卸載模塊。例如,要卸載 “PSReadline” 模塊,可以使用:
Uninstall-Module -Name PSReadline
6. Find-Module
Find-Module
cmdlet 允許你在 PowerShell 庫(kù)中搜索模塊。例如,要查找與 “Azure” 相關(guān)的所有模塊,可以使用:
Find-Module -Name *Azure*
7. Save-Module
Save-Module
cmdlet 允許你下載模塊但不安裝它。這對(duì)于在沒(méi)有互聯(lián)網(wǎng)連接的環(huán)境中手動(dòng)安裝模塊很有用。例如,要下載 “PSReadline” 模塊,可以使用:
Save-Module -Name PSReadline -Path C:\path\to\directory
3.6 調(diào)試命令
在開(kāi)發(fā)和運(yùn)行 PowerShell 腳本時(shí),可能會(huì)遇到錯(cuò)誤或異常。為了幫助用戶識(shí)別和解決這些問(wèn)題,PowerShell 提供了一組調(diào)試命令。這些命令允許用戶設(shè)置斷點(diǎn)、檢查變量的值、跟蹤執(zhí)行流程等,從而更容易地找到和修復(fù)問(wèn)題。以下是與調(diào)試相關(guān)的一些常用命令及其功能介紹:
1. Set-PSBreakpoint (sbp)
Set-PSBreakpoint
cmdlet 允許用戶在腳本、行或命令上設(shè)置斷點(diǎn)。當(dāng)執(zhí)行到斷點(diǎn)時(shí),腳本的執(zhí)行將暫停,允許用戶檢查當(dāng)前的狀態(tài)。
例如,要在 “myscript.ps1” 腳本的第 10 行設(shè)置斷點(diǎn),可以使用:
Set-PSBreakpoint -Script myscript.ps1 -Line 10
2. Get-PSBreakpoint
Get-PSBreakpoint
cmdlet 顯示當(dāng)前設(shè)置的所有斷點(diǎn)。
Get-PSBreakpoint
3. Remove-PSBreakpoint (rbp)
Remove-PSBreakpoint
cmdlet 允許用戶刪除一個(gè)或多個(gè)斷點(diǎn)。例如,要?jiǎng)h除 ID 為 1 的斷點(diǎn),可以使用:
Remove-PSBreakpoint -ID 1
4. Get-PSCallStack
Get-PSCallStack
cmdlet 顯示當(dāng)前的調(diào)用堆棧。這對(duì)于理解腳本的執(zhí)行流程和確定當(dāng)前執(zhí)行的位置非常有用。
Get-PSCallStack
5. Trace-Command
Trace-Command
cmdlet 允許用戶跟蹤特定命令的執(zhí)行,以獲取詳細(xì)的調(diào)試信息。例如,要跟蹤 “Get-ChildItem” 命令的執(zhí)行,可以使用:
Trace-Command -Name Metadata -Expression { Get-ChildItem } -PSHost
6. Enter-PSHostProcess 和 Exit-PSHostProcess
這兩個(gè) cmdlet 允許用戶進(jìn)入和退出另一個(gè) PowerShell 進(jìn)程的會(huì)話,這對(duì)于調(diào)試運(yùn)行中的腳本非常有用。
例如,要進(jìn)入進(jìn)程 ID 為 1234 的 PowerShell 進(jìn)程,可以使用:
Enter-PSHostProcess -Id 1234
退出該進(jìn)程的會(huì)話后,可以使用:
Exit-PSHostProcess
3.7 遠(yuǎn)程命令
PowerShell 的遠(yuǎn)程功能允許用戶從一個(gè)計(jì)算機(jī)連接到另一個(gè)計(jì)算機(jī),并在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行命令和腳本。這對(duì)于管理大型網(wǎng)絡(luò)、自動(dòng)化跨多臺(tái)機(jī)器的任務(wù)或簡(jiǎn)單地從一個(gè)位置訪問(wèn)另一個(gè)位置的資源非常有用。以下是與遠(yuǎn)程相關(guān)的一些常用命令及其功能介紹:
1. Enter-PSSession
Enter-PSSession
cmdlet 允許用戶啟動(dòng)一個(gè)交互式會(huì)話到遠(yuǎn)程計(jì)算機(jī)。例如,要連接到名為 “RemoteServer” 的遠(yuǎn)程計(jì)算機(jī),可以使用:
Enter-PSSession -ComputerName RemoteServer
在此會(huì)話中,你可以執(zhí)行命令就像在遠(yuǎn)程計(jì)算機(jī)的本地會(huì)話中一樣。
2. Exit-PSSession
當(dāng)你完成遠(yuǎn)程會(huì)話并想返回到本地計(jì)算機(jī)時(shí),可以使用 Exit-PSSession
cmdlet。
Exit-PSSession
3. Invoke-Command
Invoke-Command
cmdlet 允許用戶在一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)上執(zhí)行命令或腳本。例如,要在 “RemoteServer” 上執(zhí)行 “Get-Process” 命令,可以使用:
Invoke-Command -ComputerName RemoteServer -ScriptBlock { Get-Process }
4. New-PSSession
New-PSSession
cmdlet 允許用戶創(chuàng)建一個(gè)或多個(gè)持久的遠(yuǎn)程會(huì)話。這些會(huì)話可以用于多次遠(yuǎn)程命令調(diào)用,而不必每次都重新建立連接。
$session = New-PSSession -ComputerName RemoteServer
5. Remove-PSSession
Remove-PSSession
cmdlet 用于關(guān)閉并刪除之前使用 New-PSSession
創(chuàng)建的遠(yuǎn)程會(huì)話。
Remove-PSSession -Session $session
6. Export-PSSession
Export-PSSession
cmdlet 允許用戶從遠(yuǎn)程會(huì)話導(dǎo)出命令、函數(shù)、別名和其他信息,并將它們保存為一個(gè)模塊。這對(duì)于在本地計(jì)算機(jī)上使用遠(yuǎn)程計(jì)算機(jī)的功能非常有用。
Export-PSSession -Session $session -OutputModule RemoteFunctions
7. Enable-PSRemoting 和 Disable-PSRemoting
這兩個(gè) cmdlet 用于啟用或禁用計(jì)算機(jī)上的 PowerShell 遠(yuǎn)程功能。
要啟用遠(yuǎn)程功能,可以使用:
Enable-PSRemoting
要禁用遠(yuǎn)程功能,可以使用:
Disable-PSRemoting
四、特殊操作符
PowerShell 提供了一系列特殊操作符,用于執(zhí)行各種任務(wù),如比較、模式匹配、數(shù)組操作等。以下是 PowerShell 中可用的特殊操作符及其詳細(xì)介紹:
1. 算術(shù)操作符
-
-
:減法 -
+
:加法 -
*
:乘法 -
/
:除法 -
%
:取余
2. 賦值操作符
-
=
:賦值 -
+=
:增加并賦值 -
-=
:減少并賦值 -
*=
:乘以并賦值 -
/=
:除以并賦值
3. 比較操作符
-
-eq
:等于 -
-ne
:不等于 -
-gt
:大于 -
-lt
:小于 -
-ge
:大于或等于 -
-le
:小于或等于 -
-like
:使用通配符進(jìn)行字符串比較 -
-notlike
:不使用通配符進(jìn)行字符串比較 -
-match
:使用正則表達(dá)式進(jìn)行匹配 -
-notmatch
:不使用正則表達(dá)式進(jìn)行匹配
4. 邏輯操作符
-
-and
:邏輯與 -
-or
:邏輯或 -
-not
:邏輯非 -
!
:邏輯非的簡(jiǎn)寫形式
5. 位操作符
-
-band
:位與 -
-bor
:位或 -
-bxor
:位異或 -
-bnot
:位非 -
-shl
:左移 -
-shr
:右移
6. 重定向操作符
-
>
:將輸出重定向到文件,覆蓋文件內(nèi)容 -
>>
:將輸出追加到文件 -
2>
:將錯(cuò)誤輸出重定向到文件 -
2>&1
:將錯(cuò)誤輸出和正常輸出合并
7. 特殊操作符
-
-contains
:檢查數(shù)組是否包含特定值 -
-notcontains
:檢查數(shù)組是否不包含特定值 -
-in
:檢查值是否在數(shù)組中 -
-notin
:檢查值是否不在數(shù)組中 -
-replace
:使用正則表達(dá)式替換字符串 -
-split
:使用正則表達(dá)式分割字符串 -
-join
:連接數(shù)組中的元素為一個(gè)字符串
8. 類型操作符
-
-is
:檢查對(duì)象是否為特定類型 -
-isnot
:檢查對(duì)象是否不為特定類型 -
-as
:嘗試將對(duì)象轉(zhuǎn)換為特定類型
五、運(yùn)行Windows命令行工具
5.1 常用命令行工具
PowerShell 不僅支持其自己的 cmdlets,還支持傳統(tǒng)的 Windows 命令行工具。這意味著你可以在 PowerShell 會(huì)話中直接運(yùn)行這些工具,而無(wú)需切換到命令提示符(CMD
)。以下是一些常用的 Windows 命令行工具及其簡(jiǎn)要描述:
1. ipconfig
ipconfig
是一個(gè)用于查看和管理 Windows IP 配置的工具。
-
基本用法:
ipconfig
顯示計(jì)算機(jī)的所有網(wǎng)絡(luò)接口的 IP 地址、子網(wǎng)掩碼和默認(rèn)網(wǎng)關(guān)。 -
參數(shù):
-
/all
:顯示所有網(wǎng)絡(luò)接口的詳細(xì)信息。 -
/release
:釋放指定適配器的 IP 地址。 -
/renew
:更新指定適配器的 IP 地址。 -
/flushdns
:清除 DNS 解析器緩存。 -
/displaydns
:顯示 DNS 解析器緩存的內(nèi)容。 -
/registerdns
:刷新所有 DHCP 租約并重新注冊(cè) DNS 名稱。
-
2. netstat
netstat
用于顯示活動(dòng)的網(wǎng)絡(luò)連接、端口和網(wǎng)絡(luò)統(tǒng)計(jì)信息。
-
基本用法:
netstat
顯示活動(dòng)的網(wǎng)絡(luò)連接。 -
參數(shù):
-
-a
:顯示所有活動(dòng)的網(wǎng)絡(luò)連接和監(jiān)聽(tīng)的端口。 -
-b
:顯示在創(chuàng)建每個(gè)連接或監(jiān)聽(tīng)端口時(shí)涉及的可執(zhí)行文件。 -
-n
:以數(shù)字形式顯示地址和端口號(hào)。 -
-o
:顯示與每個(gè)連接關(guān)聯(lián)的所有者的進(jìn)程 ID。
-
3. ping
ping
工具用于測(cè)試網(wǎng)絡(luò)連接的可達(dá)性。
-
基本用法:
ping [目標(biāo)主機(jī)名或 IP]
向指定的主機(jī)或 IP 發(fā)送 ICMP 請(qǐng)求。 -
參數(shù):
-
-t
:持續(xù)發(fā)送 ping 請(qǐng)求,直到用戶中斷。 -
-a
:解析主機(jī)名。 -
-n [次數(shù)]
:發(fā)送指定次數(shù)的 echo 請(qǐng)求。 -
-l [大小]
:發(fā)送指定大小的數(shù)據(jù)。
-
4. tracert
tracert
是一個(gè)用于診斷路由路徑的工具。
-
基本用法:
tracert [目標(biāo)主機(jī)名或 IP]
顯示數(shù)據(jù)包從源計(jì)算機(jī)到指定目標(biāo)的路由路徑。 -
參數(shù):
-
-d
:不解析地址。 -
-h [最大躍點(diǎn)數(shù)]
:指定最大躍點(diǎn)數(shù)。 -
-j [主機(jī)列表]
:沿途經(jīng)過(guò)的主機(jī)列表。
-
5. nslookup
nslookup
是一個(gè)用于查詢 DNS 名稱和 IP 地址的工具。
-
基本用法:
nslookup [主機(jī)名]
查詢指定主機(jī)名的 IP 地址。 -
參數(shù):
-
-type
:查詢的資源記錄類型,如 A、MX、PTR 等。 -
-debug
:在響應(yīng)中顯示詳細(xì)的開(kāi)發(fā)信息。
-
6. sfc
sfc
是系統(tǒng)文件檢查器,用于掃描和修復(fù) Windows 系統(tǒng)文件。
-
基本用法:
sfc /scannow
掃描并嘗試修復(fù)任何損壞的系統(tǒng)文件。 -
參數(shù):
-
/verifyonly
:僅掃描并驗(yàn)證系統(tǒng)文件的完整性。 -
/offbootdir
:指定啟動(dòng)目錄。 -
/offwindir
:指定 Windows 目錄。
-
7. chkdsk
chkdsk
是一個(gè)用于檢查和修復(fù)磁盤錯(cuò)誤的工具。
-
基本用法:
chkdsk [驅(qū)動(dòng)器:]
檢查指定的驅(qū)動(dòng)器。 -
參數(shù):
-
/f
:修復(fù)磁盤上的錯(cuò)誤。 -
/r
:查找壞扇區(qū)并恢復(fù)可讀信息。 -
/x
:強(qiáng)制卷在檢查前先卸載。
-
8. systeminfo
systeminfo
工具用于顯示詳細(xì)的系統(tǒng)信息。
-
基本用法:
systeminfo
顯示操作系統(tǒng)、硬件和網(wǎng)絡(luò)配置的詳細(xì)信息。 -
參數(shù):
-
/s [計(jì)算機(jī)名]
:指定要查看的遠(yuǎn)程系統(tǒng)。 -
/u [用戶名]
:指定用戶名進(jìn)行身份驗(yàn)證。
-
9. gpupdate
gpupdate
是一個(gè)用于手動(dòng)更新組策略的工具。
-
基本用法:
gpupdate
更新組策略。 -
參數(shù):
-
/force
:強(qiáng)制重新應(yīng)用所有設(shè)置。 -
/logoff
:如果需要,完成后注銷用戶。
-
10. tasklist
tasklist
工具用于顯示當(dāng)前運(yùn)行的進(jìn)程列表。
-
基本用法:
tasklist
顯示所有當(dāng)前運(yùn)行的進(jìn)程及其詳細(xì)信息。 -
參數(shù):
-
/s [計(jì)算機(jī)名]
:指定要查看的遠(yuǎn)程系統(tǒng)。 -
/u [用戶名]
:指定用戶名進(jìn)行身份驗(yàn)證。 -
/fi [過(guò)濾條件]
:按照指定的條件顯示任務(wù)列表。
-
這些命令行工具在日常的系統(tǒng)管理和故障排查中都非常有用。了解它們的參數(shù)和用法可以幫助你更有效地使用這些工具。
5.2 對(duì)應(yīng)的cmdlet
Windows Tool | PowerShell Cmdlet |
---|---|
ipconfig | Get-NetIPAddress |
netstat | Get-NetTCPConnection |
ping | Test-Connection |
tracert | Test-NetConnection -TraceRoute |
nslookup | Resolve-DnsName |
sfc | Repair-WindowsImage |
chkdsk | Repair-Volume |
systeminfo | Get-ComputerInfo |
gpupdate | Invoke-GPUpdate |
tasklist | Get-Process |
六、運(yùn)行用戶程序
除此,之外,我們自己安裝的一些命令行應(yīng)用也可以在Powershell中運(yùn)行。
在Powershell中使用下列工具時(shí),請(qǐng)先安裝,并且添加到環(huán)境變量。
在Windows下,很多功能并不需要在終端中完成,使用圖形化界面可能更省事,本文只是做個(gè)介紹。
6.1 vim(nvim)
nvim是vim的一個(gè)分支,更加友好,我之前的文章專門介紹過(guò)。
這里去github下載Windows版本的nvim使用。
和在Linux終端中的使用方式一樣。
示例:
6.2 gcc / gdb
我是使用MinGW(Minimalist GNU for Windows)安裝的gcc和gdb。
使用示例: 一個(gè)tcp服務(wù)端程序。
編譯和運(yùn)行
調(diào)試
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-644308.html
把 永 遠(yuǎn) 愛(ài) 你 寫 進(jìn) 詩(shī) 的 結(jié) 尾 ~ 文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-644308.html
到了這里,關(guān)于【Powershell 】(Windows下)常用命令 | 命令別名 | 運(yùn)行Windows命令行工具 | 運(yùn)行用戶程序(vim、gcc、gdb)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!