82 lines
2.2 KiB
Plaintext
82 lines
2.2 KiB
Plaintext
function db
|
|
{
|
|
[CmdletBinding(DefaultParameterSetName="None")]
|
|
[OutputType([PSCustomObject])]
|
|
Param
|
|
(
|
|
[Parameter(Mandatory=$false,
|
|
Position=0,
|
|
ParameterSetName="Add a new entry")]
|
|
[string]
|
|
$Path = ".\SimpleDatabase.csv",
|
|
|
|
[Parameter(Mandatory=$true,
|
|
ParameterSetName="Add a new entry")]
|
|
[string]
|
|
$Name,
|
|
|
|
[Parameter(Mandatory=$true,
|
|
ParameterSetName="Add a new entry")]
|
|
[string]
|
|
$Category,
|
|
|
|
[Parameter(Mandatory=$true,
|
|
ParameterSetName="Add a new entry")]
|
|
[datetime]
|
|
$Birthday,
|
|
|
|
[Parameter(ParameterSetName="Print the latest entry")]
|
|
[switch]
|
|
$Latest,
|
|
|
|
[Parameter(ParameterSetName="Print the latest entry for each category")]
|
|
[switch]
|
|
$LatestByCategory,
|
|
|
|
[Parameter(ParameterSetName="Print all entries sorted by a date")]
|
|
[switch]
|
|
$SortedByDate
|
|
)
|
|
|
|
if (-not (Test-Path -Path $Path))
|
|
{
|
|
'"Name","Category","Birthday"' | Out-File -FilePath $Path
|
|
}
|
|
|
|
$db = Import-Csv -Path $Path | Foreach-Object {
|
|
$_.Birthday = $_.Birthday -as [datetime]
|
|
$_
|
|
}
|
|
|
|
switch ($PSCmdlet.ParameterSetName)
|
|
{
|
|
"Add a new entry"
|
|
{
|
|
[PSCustomObject]@{Name=$Name; Category=$Category; Birthday=$Birthday} | Export-Csv -Path $Path -Append
|
|
}
|
|
"Print the latest entry"
|
|
{
|
|
$db[-1]
|
|
}
|
|
"Print the latest entry for each category"
|
|
{
|
|
($db | Group-Object -Property Category).Name | ForEach-Object {($db | Where-Object -Property Category -Contains $_)[-1]}
|
|
}
|
|
"Print all entries sorted by a date"
|
|
{
|
|
$db | Sort-Object -Property Birthday
|
|
}
|
|
Default
|
|
{
|
|
$db
|
|
}
|
|
}
|
|
}
|
|
|
|
db -Name Bev -Category friend -Birthday 3/3/1983
|
|
db -Name Bob -Category family -Birthday 7/19/1987
|
|
db -Name Gill -Category friend -Birthday 12/9/1986
|
|
db -Name Gail -Category family -Birthday 2/11/1986
|
|
db -Name Vince -Category family -Birthday 3/10/1960
|
|
db -Name Wayne -Category coworker -Birthday 5/29/1962
|