PSProjectStatus 简介
我编写了很多 PowerShell 模块。可能和您一样,我一次从事多个项目。我发现很难跟踪我正在做什么以及我可能忽略了什么。因此,我转向 PowerShell 并创建了一个工具来管理我的项目。 PowerShell 模块称为 PSProjectStatus,您可以从 PowerShell 库安装它。你可以在 GitHub 上找到该项目,但我想我应该在这里提供一个介绍。
基于类
该模块围绕定义 PSProject 对象的 PowerShell 类构建。
Class PSProject {
[string]$Name = (Split-Path (Get-Location).path -Leaf)
[string]$Path = (Convert-Path (Get-Location).path)
[datetime]$LastUpdate = (Get-Date)
[string[]]$Tasks
[PSProjectStatus]$Status = "Development"
[string]$GitBranch
[string]$UpdateUser = "$([system.environment]::UserDomainName)\$([System.Environment]::Username)"
[void]Save() {
$json = Join-Path -Path $this.path -ChildPath psproject.json
$this | Select-Object -Property * -exclude Age | ConvertTo-Json | Out-File $json
}
}创建类的数据存储在 JSON 文件 psproject.json 中,该文件存储在模块的根目录中。 PSProjectStatus 模块具有管理此对象和 JSON 文件的命令。
创建状态
要创建新状态,请更改为模块的根目录并运行 New-PSProjectStatus。
Status 属性基于枚举。
enum PSProjectStatus {
Development
Updating
Stable
AlphaTesting
BetaTesting
ReleaseCandidate
Patching
UnitTesting
AcceptanceTesting
Other
}默认为开发。我尝试添加足够的值来适应几乎任何情况。创建新的 PSProject 状态时,信息将写入 JSON 文件。
如果检测到 git 分支,它将被包含在内。
更新状态
要更新状态,请使用 Set-PSProjectStatus 命令。
您可以指定以逗号分隔的任务列表。我倾向于保持它们的高层次和广泛性。如果要添加任务,请使用 -Concatentate 参数。目前,除了手动编辑 JSON 文件之外,没有其他方法可以删除任务。如果您在 VSCode 中打开项目,那么这并不难。您始终可以手动编辑该文件。如果需要更新 LastUpdate 值,请运行 Get-Date -format o |设置剪贴板并将值粘贴到文件中。
Age 属性是通过扩展 PSProject 类型添加的 ScriptProperty。
获得状态
通常,您将从模块根运行 Get-PSProjectStatus。如果是格式化表,则默认输出。这是您在创建或设置状态时看到的输出。该模块包括一个列表视图。
该列表使查看任务更加容易。
为了管理我的工作中的所有内容,我可以在 PowerShell 7 脚本文件中使用此模块。
#requires -version 7.2
#requires -module Microsoft.PowerShell.ConsoleGuiTools
#open a project using the PSProject status
Import-Module PSProjectStatus -Force
#get all projects
$all = Get-ChildItem -Path C:\Scripts -Directory | Get-PSProjectStatus -WarningAction SilentlyContinue
#display the projects in Out-ConsoleGridview and open the selected one in VS Code
$all | Sort-Object Status, LastUpdate |
Select-Object Path, Status, @{Name = "Tasks"; Expression = { $_.Tasks -join ',' } },
Gitbranch, LastUpdate |
Out-ConsoleGridView -Title "PSProject Management" -OutputMode Single |
ForEach-Object { code $_.path }
该脚本在 C:\Scripts 中搜索带有 psproject.json 的子文件夹,并使用 Out-ConsoleGridview 显示项目。从这里,我可以选择一个模块并在 VS Code 中打开它。
尝试一下
我希望您能安装该模块并试用一下。我想知道您的想法以及它对您有何作用。什么会增加价值?我已经有了一些改进的想法,但我很想听听你的想法。邀请您使用存储库的讨论部分。




