Powershell
导言
在 Windows Terminal 里使用, 有些踩坑经验1
Install powershell in D driver¶
如果你需要将PowerShell 7.x(注意:win的安装包在show more里)与其他版本并排运行,请使用ZIP安装方法将其他版本安装到不同的文件夹。
Bashrc-like 配置文件¶
存放路径与文件
E:/PowerShell via v14.17.3 via 🐍 v3.9.7
❯ echo $PSHOME
E:\commonSoftware\PowerShell7
E:/PowerShell via v14.17.3 via 🐍 v3.9.7
❯ echo $PROFILE
D:\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
常见的设置
%HOMEPATH%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
$env:DISPLAY="localhost:0.0"
Import-Module PSColor
Import-Module DirColors
Import-Module posh-git # 引入 posh-git
Import-Module oh-my-posh # 引入 oh-my-posh
#Set-Theme Paradox 设置主题为 Paradox
Set-PSReadLineOption -PredictionSource History # 设置预测文本来源为历史记录
Set-PSReadlineKeyHandler -Key Tab -Function Complete # 设置 Tab 键补全
Set-PSReadLineKeyHandler -Key "Ctrl+d" -Function MenuComplete # 设置 Ctrl+d 为菜单补全和 Intellisense
Set-PSReadLineKeyHandler -Key "Ctrl+z" -Function Undo # 设置 Ctrl+z 为撤销
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward # 设置向上键为后向搜索历史记录
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward # 设置向下键为前向搜索历史纪录
Set-PSReadLineOption -Colors @{ InlinePrediction = '#DF6C75'}
Invoke-Expression (&starship init powershell)
function Pro {notepad $PROFILE}
function Get-CmdletAlias ($cmdletname) {
Get-Alias |
Where-Object -FilterScript {$_.Definition -like "$cmdletname"} |
Format-Table -Property Definition, Name -AutoSize
}
$env:TEMP="E:\Temp"
$env:TMP="E:\Temp"
$env:GIT_CURL_VERBOSE = 1
$env:GIT_TRACE = 1
Write-Host "Hi Mike, welcome back!"
$HOMEDRIVE = "D:"
$HOMEPATH = "\PowerShell"
Remove-Variable -Force HOME
#Set-Variable HOME "E:\PowerShell"
# Set and force overwrite of the $HOME variable
Set-Variable HOME "$HOMEDRIVE$HOMEPATH" -Force
# Set the "~" shortcut value for the FileSystem provider
(get-psprovider 'FileSystem').Home = $HOMEDRIVE + $HOMEPATH
Set-location E:\PowerShell
Function Format-FileSize() {
Param ([int64]$size)
If ($size -gt 1TB) {[string]::Format("{0:0.00} TB", $size / 1TB)}
ElseIf ($size -gt 1GB) {[string]::Format("{0:0.00} GB", $size / 1GB)}
ElseIf ($size -gt 1MB) {[string]::Format("{0:0.00} MB", $size / 1MB)}
ElseIf ($size -gt 1KB) {[string]::Format("{0:0.00} kB", $size / 1KB)}
ElseIf ($size -gt 0) {[string]::Format("{0:0.00} B", $size)}
Else {""}
}
. : 无法加载文件 C:\Users\94364\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1,因为在此系统上禁止运行脚本。
. : 无法加载文件 C:\Users\94364\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1,因为在此系统上禁止运行脚
本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 3
+ . 'C:\Users\94364\Documents\WindowsPowerShell\Microsoft.PowerShell_pr ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [],PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
环境变量¶
- 查看:运行
dir env:
显示 - 修改:
$env:TMP="D:\Temp"
Proxy¶
PATH¶
echo $env:PATH| tr ";" "\n"| sort
ssh¶
Win32-OpenSSH they go to %USERPROFILE%\.ssh.
That typically is: C:\Users\username\.ssh
常用命令¶
Kill Process by CLI¶
垃圾,Windows管理器,打开直接卡住了。还不如直接命令行
systeminformer 超级好用
killProcess.ps1
# 获取用户输入的匹配关键字
$keyword = Read-Host "请输入要匹配的关键字"
# 显示所有匹配该关键字的进程
$processes = Get-Process | Where-Object { $_.ProcessName -like "*$keyword*" }
$processes
# 检查是否有匹配的进程
if ($processes.Count -eq 0) {
Write-Host "没有找到匹配的进程"
exit
}
# 询问用户是否杀掉这些进程
$response = Read-Host "是否结束这些进程? (y/n)"
# 根据用户回答处理进程
if ($response -eq 'y') {
$processes | Stop-Process
Write-Host "进程已结束"
} else {
Write-Host "操作已取消"
}
Linux vs Windows Commands¶
Windows VS linux2