为 Windows 用户设计的 Powershell 辅助开发模块。
个人在 Windows 下的自用的 Powershell 脚本集合,可以有效改善 Windows 下的开发体验。
命令 | 别名 | 功能简述 |
---|---|---|
Set-WebProxy | swp | 为当前Powershell会话设置网络代理 |
Clear-WebProxy | clwp | 清除当前Powershell会话的网络代理 |
Add-Path | apa | 向环境变量(PATH一类)添加路径 |
Remove-Path | rpa | 从环境变量(PATH一类)删除路径 |
Enter-VsEnv | etvs | 设定 VS 开发者 cli 环境 |
Enable-Clang | ecla | 设置运行clang必要的环境变量(LIB, INCLUDE, PATH) |
Enable-Vcpkg | evpg | 为 cli 环境集成 vcpkg |
Format-ItemSize | fis | 字节单位换算,提高文件大小可读性 |
Get-ItemSize | gis | 计算指定文件/文件夹大小 |
Get-TempDir | gtd | 获取系统/用户临时文件夹 |
Get-CmdletAlias | gcas | 查询命令别名 |
Send-Notification | sdnf | 发送桌面通知(可用作定时任务脚本的完成通知) |
Write-Log | wrlg | 简易日志接口,提高脚本可维护性 |
Start-Log | salg | 记录当前 Powershell 会话或脚本输出 |
Stop-Log | splg | 停止记录当前 Powershell 会话或脚本输出 |
New-RandString | nrs | 生成随机字符串 |
Enable-Python | epy | 切换当前会话的Python环境 |
Set-RustMirror | srsm | 设置 rust 镜像 |
暂无计划,此模块目前主要是自用(欢迎PR)
主要安装方式有三:
- 手动下载仓库源码包,并解压至 PSModulePath 所包含的路径下;
- 进入 PSModulePath 所包含的路径,执行仓库克隆
使用 scoop 进行安装(暂未实现)
本模块唯一的可选依赖库为适用于 .Net5 的 Windows SDK 库。该库用于为切换至 .Net5 后的 Powershell Core 提供 WinRT API 支持,以实现 Send-Notification
命令。具体原因可参考一下两条链接内容:
不需要在 Powershell Core 使用 Send-Notification
命令的用户,可在模块配置目录的创建名为disable-cswinrt的空文件(对应指令为New-Item $Env:LOCALAPPDATA\DevTools-Win\disable-cswinrt -Force
)。
需要使用此依赖的用户则遵照以下步的依赖安装:
# 进入 DevTools.psd1 所在目录
cd "DevTools-Win"
# 设置http(s)代理(推荐网络受限地区用户采用)
. .\src\public\Set-WebProxy.ps1
swp http://<你的代理地址>:<你的代理端口>
# 首次加载模块,触发自动依赖下载和安装
Import-Module "DevTools-Win"
# 查看lib目录,依赖文件已就绪
ls .\lib
#
# Directory: C:\Users\shiel\source\modules\DevTools-Win\lib
#
# Mode LastWriteTime Length Name
# ---- ------------- ------ ----
# -a--- 2021/4/13 20:26 26685320 Microsoft.Windows.SDK.NET.dll
# -a--- 2021/4/13 20:26 300424 WinRT.Runtime.dll
#
后续如果需要更新依赖库文件,仅需手动删除上述 lib 路径,以在在下次加载触发依赖安装。
自定义配置存放于目录$Env:LOCALAPPDATA\DevTools-Win
下的 config.json 文件(不支持注释)内,用于覆盖默认配置。
{
"Proxy": "http://192.168.36.1:8080", // 避免每次使用swp时重复输入,可被$Env:HTTP(S)_PROXY覆盖,默认为空
"VsWhere": "C:\\Program Files (x86)\\Microsoft Visual Studio\\Installer\\vswhere.exe", // 指定vswhere程序路径,可被$Env:VSWHERE_PATH覆盖
"VcpkgRoot": "C:\\Users\\abc\\source\\repos\\vcpkg", // 指定 vcpkg 根目录,可被$Env:VCPKG_ROOT覆盖,默认为空
"Clang": "C:\\Users\\abc\\scoop\\shims\\clang.ps1", // 指定 clang 路径,可被$Env:CLANG_PATH覆盖,默认为空
"PyRoot": "C:\\Users\\abc\\AppData\\Local\\Programs\\Python\\Python38", // 指定 Python 根目录,可被$Env:Py_ROOT覆盖,默认自动检测
"RustMirror": "rsproxy" // 指定 rust 镜像源名称,默认为rsproxy
}
自v1.1.2起,提供Get-DtwConfig, Set-DtwConfig
快速查/更改配置。如果需要令更改永久生效,执行命令Show-DtwConfig|ConvertTo-Json|Out-File $Env:LOCALAPPDATA\DevTools-Win\config.json
。
本模块基于自用脚本打包分享。我个人的主要使用环境为 Windows 10 + Powershell Core + Windows Terminal。在正式发布前,已针对 Windows Powershell 5.1 进行了一定程度的兼容性适配,但不保证 100% 兼容。
微软当前对Powershell的开发重心已全方面倾斜至 Powershell Core,原 Windows Powershell 5.1 仅做兼容性保留(实际使用上,我已遇到不少Bug,但长期未修复)。考虑到目前二者间差异和维护状态,个人建议用户迁移至 Powershell Core。
由于 .Net 技术栈本身的限制,Remove-Module
无法卸载 Assembly 文件。这会导致烦人的文件占用问题。为了克服这一问题,Send-Notification
命令在实现上采用了一点小技巧。通过 Start-Job
创建后台任务的副作用(脱离当前会话),使 Assembly 文件的加载限定在新的 AppDomain 内。这样,Assembly 文件会在任务完成后自动完成卸载(随新 AppDomain 一起被卸载)。