diff --git a/src/AddIns/Misc/PackageManagement/Cmdlets/Project/PackageManagement.Cmdlets.csproj b/src/AddIns/Misc/PackageManagement/Cmdlets/Project/PackageManagement.Cmdlets.csproj
index 3d7650ffd2..45e720d59c 100644
--- a/src/AddIns/Misc/PackageManagement/Cmdlets/Project/PackageManagement.Cmdlets.csproj
+++ b/src/AddIns/Misc/PackageManagement/Cmdlets/Project/PackageManagement.Cmdlets.csproj
@@ -45,9 +45,11 @@
+
+
diff --git a/src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/GetProjectCmdlet.cs b/src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/GetProjectCmdlet.cs
new file mode 100644
index 0000000000..90a98f18b9
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/GetProjectCmdlet.cs
@@ -0,0 +1,92 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Management.Automation;
+
+using ICSharpCode.PackageManagement.EnvDTE;
+using ICSharpCode.PackageManagement.Scripting;
+using ICSharpCode.SharpDevelop.Project;
+
+namespace ICSharpCode.PackageManagement.Cmdlets
+{
+ [Cmdlet(VerbsCommon.Get, "Project", DefaultParameterSetName = ParameterAttribute.AllParameterSets)]
+ public class GetProjectCmdlet : PackageManagementCmdlet
+ {
+ public GetProjectCmdlet()
+ : this(
+ PackageManagementServices.ConsoleHost,
+ null)
+ {
+ }
+
+ public GetProjectCmdlet(
+ IPackageManagementConsoleHost consoleHost,
+ ICmdletTerminatingError terminatingError)
+ : base(consoleHost, terminatingError)
+ {
+ }
+
+ [Parameter(ParameterSetName = "AllProjects")]
+ public SwitchParameter All { get; set; }
+
+ [Parameter(ParameterSetName = "ProjectsFilteredByName")]
+ public string[] Name { get; set; }
+
+ protected override void ProcessRecord()
+ {
+ ThrowErrorIfProjectNotOpen();
+
+ if (All.IsPresent) {
+ WriteAllProjectsToPipeline();
+ } else if (Name != null) {
+ WriteFilteredProjectsToPipeline();
+ } else {
+ WriteDefaultProjectToPipeline();
+ }
+ }
+
+ void WriteAllProjectsToPipeline()
+ {
+ IEnumerable allProjects = GetAllProjects();
+ WriteProjectsToPipeline(allProjects);
+ }
+
+ IEnumerable GetAllProjects()
+ {
+ var projects = new OpenProjects(ConsoleHost);
+ return projects.GetAllProjects();
+ }
+
+ void WriteProjectsToPipeline(IEnumerable projects)
+ {
+ bool enumerateCollection = true;
+ WriteObject(projects, enumerateCollection);
+ }
+
+ void WriteFilteredProjectsToPipeline()
+ {
+ IEnumerable projects = GetFilteredProjects();
+ WriteProjectsToPipeline(projects);
+ }
+
+ IEnumerable GetFilteredProjects()
+ {
+ var projects = new OpenProjects(ConsoleHost);
+ return projects.GetFilteredProjects(Name);
+ }
+
+ void WriteDefaultProjectToPipeline()
+ {
+ Project project = GetDefaultProject();
+ WriteObject(project);
+ }
+
+ Project GetDefaultProject()
+ {
+ return new Project(DefaultProject);
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/OpenProjects.cs b/src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/OpenProjects.cs
new file mode 100644
index 0000000000..f3a7ec0464
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/OpenProjects.cs
@@ -0,0 +1,52 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using System.Collections.Generic;
+using System.Management.Automation;
+
+using ICSharpCode.PackageManagement.EnvDTE;
+using ICSharpCode.PackageManagement.Scripting;
+using ICSharpCode.SharpDevelop.Project;
+
+namespace ICSharpCode.PackageManagement.Cmdlets
+{
+ public class OpenProjects
+ {
+ IPackageManagementConsoleHost consoleHost;
+
+ public OpenProjects(IPackageManagementConsoleHost consoleHost)
+ {
+ this.consoleHost = consoleHost;
+ }
+
+ public IEnumerable GetAllProjects()
+ {
+ foreach (IProject project in consoleHost.GetOpenProjects()) {
+ yield return CreateProject(project);
+ }
+ }
+
+ Project CreateProject(IProject project)
+ {
+ return new Project(project as MSBuildBasedProject);
+ }
+
+ public IEnumerable GetFilteredProjects(string[] projectNames)
+ {
+ foreach (string projectName in projectNames) {
+ WildcardPattern wildcard = CreateWildcard(projectName);
+ foreach (Project project in GetAllProjects()) {
+ if (wildcard.IsMatch(project.Name)) {
+ yield return project;
+ }
+ }
+ }
+ }
+
+ WildcardPattern CreateWildcard(string pattern)
+ {
+ return new WildcardPattern(pattern, WildcardOptions.IgnoreCase);
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Cmdlets/Test/Helpers/FakeCommandRuntime.cs b/src/AddIns/Misc/PackageManagement/Cmdlets/Test/Helpers/FakeCommandRuntime.cs
index 0b948e3a02..adce9492c7 100644
--- a/src/AddIns/Misc/PackageManagement/Cmdlets/Test/Helpers/FakeCommandRuntime.cs
+++ b/src/AddIns/Misc/PackageManagement/Cmdlets/Test/Helpers/FakeCommandRuntime.cs
@@ -11,6 +11,9 @@ namespace PackageManagement.Cmdlets.Tests.Helpers
public class FakeCommandRuntime : ICommandRuntime
{
public List