| Cmdlet | CLI equivalent | What it does |
|---|---|---|
Get-Project |
project list, get, all, modified |
Lists projects, gets one by -Number, reads every project page by page with -All, reads the unpaged v1 list with -Unpaged, or one modified page with -Modified. |
New-Project |
project create |
Creates a project. |
Update-Project |
project update |
Sparse update of a project. |
Remove-Project |
project delete |
Deletes a project by -Number or -RecordId through the generic table API (see below). Confirmation: High. |
Get-ProjectInvoice |
project invoices |
Lists the invoices of a project. |
Get-ProjectJournal |
project journals |
Reads work journals (filter by employee or time). |
Get-ProjectPhase |
project phase list, get |
Lists phases or gets one. |
New-ProjectPhase |
project phase create |
Creates a phase. |
Update-ProjectPhase |
project phase update |
Sparse update of a phase. |
Get-ProjectPhaseLink |
project phase link list |
Lists the phases linked to a project. |
New-ProjectPhaseLink |
project phase link create |
Links a phase to a project. |
Remove-ProjectPhaseLink |
project phase link delete |
Unlinks a phase. Confirmation: High. |
Get-ProjectTask |
project task list, get |
Lists tasks or gets one. |
New-ProjectTask |
project task create |
Creates a task. |
Update-ProjectTask |
project task update |
Sparse update of a task. |
| Cmdlet | CLI equivalent | What it does |
|---|---|---|
Get-WorkRequest |
project work-request list, list-for |
Reads one filtered page, or every work request of a project with -All. |
New-WorkRequest |
project work-request create |
Creates a work request. |
Update-WorkRequest |
project work-request update |
Updates a work request. |
Remove-WorkRequest |
project work-request delete |
Deletes a work request. Confirmation: High. |
Get-ProjectTransaction |
project transaction list |
Reads one page of project transactions. |
Get-ProjectTransactionMemo |
project transaction memo get |
Gets the memo of a transaction. |
Update-ProjectTransactionMemo |
project transaction memo add |
Adds or replaces the memo of a transaction. |
New-ProjectWorkEntry |
project work-entry create |
Creates work entries for an employee. |
Update-ProjectWorkEntry |
project work-entry update |
Updates work entries. |
Remove-ProjectWorkEntry |
project work-entry delete |
Deletes one work entry. Confirmation: High. |
| Cmdlet | CLI equivalent | What it does |
|---|---|---|
Get-Employee |
employee list, get |
Lists employees (filter by status or time; -All reads every employee) or gets one by -Number. |
Employee objects never include payroll data. See Safety and errors.
Get-Project returns 100 projects by default. -All and -Unpaged read everything, so they ask for confirmation first, like a High-impact cmdlet: pass -Confirm:$false in scripts, -WhatIf shows the target and sends nothing, and -WhatIf and -Confirm have no effect on the other parameter sets. -All pages through the list and cannot be combined with -Take (1 to 1000; -All:$false behaves as if -All were omitted). -Unpaged is the unpaged v1 endpoint, which -All read in earlier versions.
Get-Project -Customer 10001 -Take 20
Get-Project P-1001
# Every project of a customer, page by page (asks first)
Get-Project -All -Customer 10001 -Confirm:$false
# The unpaged v1 list; -Type and -Status are DK Plus's numeric values here
Get-Project -Unpaged -Type 1 -Status 2 -Maximum 500 -Confirm:$false
# One page of recent changes (ISO date or date-time with offset)
Get-Project -Modified '2026-10-01' -Page 1 -Count 50
New-Project P-1001 -Name 'Roof repair' -CustomerNumber 10001 -Status InProgress -Type ServiceJob
Update-Project P-1001 -Status Finished
# An empty string clears; $null would leave it unchanged
Update-Project P-1001 -Description ''
# Move every project of a customer to another group
Get-Project -Customer 10001 | Update-Project -Group G2
# Invoices of every finished project
Get-Project -Status Finished | Get-ProjectInvoice
New-ProjectPhase PH-1 -Name 'Preparation'
New-ProjectPhase PH-9 -Name 'Summer holiday' -Type Holiday -Enabled:$false
# Disable every holiday phase
Get-ProjectPhase | Where-Object Type -eq Holiday | Update-ProjectPhase -Enabled:$false
New-ProjectPhaseLink P-1001 PH-1 -Description 'Preparation'
Get-ProjectPhaseLink P-1001 | Remove-ProjectPhaseLink -Confirm:$false
New-ProjectTask T-1 -Name 'Painting'
Update-ProjectTask T-1 -Name 'Interior painting'
-Enabled:$false sends false. Omitting -Enabled leaves the value unchanged.
DK Plus has no project DELETE endpoint. Remove-Project deletes by -Number (also from the pipeline) or by -RecordId (alias -Id) through the generic table endpoint on the dkERP project table pjjob. That skips DK Plus project validation, and what dkERP does with a project that has transactions, phases, or work requests is not verified live, so try it on a test company first. The cmdlet is High impact (it prompts unless you pass -Confirm:$false), writes no output, and is never retried.
Get-Project -Number P-1001 | Remove-Project -WhatIf
Remove-Project -RecordId 1111 -Confirm:$false
To delete several projects, pipe the objects straight into Remove-Project so one confirmation covers the batch (answer [A] Yes to All):
Get-Project -Customer 10001 | Where-Object Name -like 'Test*' | Remove-Project
Calling Remove-Project inside ForEach-Object prompts for every item. -WhatIf previews the batch, and -Confirm:$false skips the prompt in scripts.
Get-WorkRequest -Project X -All reads every work request of a project and, like the other -All sets, asks for confirmation first (-Confirm:$false skips it).
# One page, filters sent only when given
Get-WorkRequest -Project P-1001 -Type Job -Status InProgress
# Every work request of a project
Get-WorkRequest -Project P-1001 -All -Confirm:$false
New-WorkRequest WR-1 -ProjectNumber P-1001 -TaskNumber T-1 -Supervisor E-1 -Worker E-2 -Type Job -Description 'Fix the roof'
# Mark a project's work requests as billed
Get-WorkRequest -Project P-1001 -All -Confirm:$false | Update-WorkRequest -Status Billed
Get-WorkRequest -Project P-1001 -All -Confirm:$false | Where-Object Status -eq Cancelled | Remove-WorkRequest -Confirm:$false
A work request update needs the request's identifier and its required members (number, project, task, supervisor, and worker). When you pipe a work request from Get-WorkRequest, those come from the piped object and only the members you give change.
Get-ProjectTransaction -Project P-1001 -Count 50
Get-ProjectTransaction -JournalAfter '2026-10-01' -Count 100
Get-ProjectTransactionMemo 77
Update-ProjectTransactionMemo 77 'Invoiced in October'
# Set the same memo on a project's transactions
Get-ProjectTransaction -Project P-1001 | Update-ProjectTransactionMemo -Memo 'Reviewed'
Get-ProjectTransaction adds a RecordId property to each transaction, and the memo cmdlets bind -RecordId from it. A project, a journal, or a work request that is piped into a memo cmdlet is rejected for that object before any request.
Hours and dates follow the culture-invariant rules: . is the decimal point and dates are ISO 8601.
New-ProjectWorkEntry E-7 -ProjectNumber P-1001 -PhaseNumber PH-1 -Date '2026-10-12' -Hours 7.5 -Description 'Roof' -Billable
# Several entries in one request, posted to the journal
New-ProjectWorkEntry E-7 -InputObject @(@{ ProjectNumber = 'P-1001'; Hours = 4 }, @{ ProjectNumber = 'P-1002'; Hours = 3.5 }) -Post
Update-ProjectWorkEntry E-7 -Parent 3 -Sequence 2 -ProjectNumber P-1001 -Hours 8
# Mark every line of an employee's journals billable
Get-ProjectJournal -Employee E-7 | ForEach-Object Lines | Update-ProjectWorkEntry -Billable -Post
Remove-ProjectWorkEntry E-7 3 2
Journal lines carry the employee, the journal (Parent), the Sequence, and the project, so they bind all identifiers when piped.
Get-Employee -Status Active -Take 50
Get-Employee E-7
A missing employee writes a non-terminating NotFound error.