В моем решении есть несколько проектов, один из которых содержит класс = в основном модуль С#, который будет использоваться через консоль Power Shell:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Management.Automation;
using System.Management;
using EDZ.DAL;
using EDZ.Model;
using System.Collections;
namespace AddUser
{
[Cmdlet(VerbsCommon.Add, "User")]
class AddUser : Cmdlet
{
protected override void ProcessRecord()
{
WriteObject("test string");
}
//public AddUser(IRepository<IEntity> irepo)
//{
// repoUser = (RepositoryBase<User>)irepo;
//}
//RepositoryBase<User> repoUser;
//RepositoryBase<User> repoUser = new RepositoryBase<User>();
//[Parameter(Mandatory = false, Position = 1)]
//public Guid UserID { get; set; }
//[Parameter(Mandatory = false, Position = 2)]
//public string FirstName { get; set; }
//[Parameter(Mandatory = false, Position = 3)]
//public string LastName { get; set; }
//[Parameter(Mandatory = false, Position = 4)]
//public string Title { get; set; }
//[Parameter(Mandatory = false, Position = 5)]
//public string Email { get; set; }
//[Parameter(Mandatory = false, Position = 6)]
//public Guid ExpertId { get; set; }
//[Parameter(Mandatory = false, Position = 7)]
//public Guid IdentityId { get; set; }
//protected override void ProcessRecord()
//{
// //try {
// User user = new User() { FirstName = this.FirstName, LastName = this.LastName, Title = this.Title, Email = this.Email, ExpertId = this.ExpertId, IdentityId = this.IdentityId };
// repoUser.Add(UserID, user);
// //}
// //catch(Exception ex)
// //{
// // WriteObject("something's wrong: " + ex.Message);
// //}
// IEnumerable tempList = repoUser.GetAll();
// foreach(User u in tempList)
// {
// WriteObject(u);
// }
//}
}
}
Что я сделал:
построил решение и скопировал путь к AddUser.dll
открыл консоль PS от имени администратора
успешно импортировал AddUser.dll -> когда я проверяю его с помощью команды Get-Module, AddUser присутствует в столбце «Имя». Хотя в столбце ExportedCommands в той же строке ничего нет... может быть проблема в этом?
Когда я пишу команду «Добавить пользователя», я ожидаю отобразить «тестовую строку», но получаю эту ошибку:
Add-User : термин «Add-User» не распознается как имя командлета, функции, файла сценария или исполняемой программы. Проверьте правильность написания имени или, если был указан путь, убедитесь, что путь указан правильно, и повторите попытку. В строке: 1 символ: 1 + Add-User + ~~~~~~~~ + CategoryInfo : ObjectNotFound: (Add-User:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException