diff --git a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/Get-Error.cs b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/Get-Error.cs
new file mode 100644
index 0000000000..9c8d670e06
--- /dev/null
+++ b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/Get-Error.cs
@@ -0,0 +1,93 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Management.Automation;
+
+namespace Microsoft.PowerShell.Commands
+{
+ ///
+ /// Class for Get-Error implementation.
+ ///
+ [Experimental("Microsoft.PowerShell.Utility.PSGetError", ExperimentAction.Show)]
+ [Cmdlet(VerbsCommon.Get, "Error",
+ HelpUri = "https://docs.microsoft.com/powershell/module/microsoft.powershell.utility/get-error?view=powershell-7&WT.mc_id=ps-gethelp",
+ DefaultParameterSetName = NewestParameterSetName)]
+ public sealed class GetErrorCommand : PSCmdlet
+ {
+ internal const string ErrorParameterSetName = "Error";
+ internal const string NewestParameterSetName = "Newest";
+ internal const string AliasNewest = "Last";
+
+ ///
+ /// Gets or sets the error object to resolve.
+ ///
+ [Parameter(Position = 0, ValueFromPipeline = true, ParameterSetName = ErrorParameterSetName)]
+ [ValidateNotNullOrEmpty]
+ public PSObject InputObject { get; set; }
+
+ ///
+ /// Gets or sets the number of error objects to resolve starting with newest first.
+ ///
+ [Parameter(ParameterSetName = NewestParameterSetName)]
+ [Alias(AliasNewest)]
+ [ValidateRange(1, int.MaxValue)]
+ public int Newest { get; set; } = 1;
+
+ ///
+ /// Process the error object.
+ ///
+ protected override void ProcessRecord()
+ {
+ var errorRecords = new List