Форум программистов, компьютерный форум, киберфорум
Наши страницы

PowerShell

Войти
Регистрация
Восстановить пароль
 
Victoros6666
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 92
#1

Запуск С# кода из powershell - PowerShell

03.06.2017, 23:09. Просмотров 357. Ответов 4
Метки нет (Все метки)

Все добрый день.
Помогите разобраться с ошибкой.
запускаю код C# в повершеле

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$power =  @"
using System; 
namespace example 
{ 
    class Program 
    { 
        public static void Main(string[] args) 
        { 
            string s = "abcd efgh"; 
            Console.WriteLine("Было: " + s); 
            s = s.Remove(0, 1); 
            Console.WriteLine("Стало: " + s); 
            Console.ReadKey(); 
        } 
    } 
}
"@
 
[void] (Add-Type -TypeDefinition $power -PassThru)
получаю такое сообщение и не обратиться к методу.
PowerShell
1
2
3
4
5
6
7
8
9
PS C:\Users\usr> [void] (Add-Type -TypeDefinition $powerKeyShellLogger -PassThru)
WARNING: The generated type is not public.
PS C:\Users\usr>[example.Program]::Main()
Unable to find type [example.Program].
At line:1 char:1
+ [example.Program]::Main()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (example.Program:TypeName) [], RuntimeException
    + FullyQualifiedErrorId : TypeNotFound
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2017, 23:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запуск С# кода из powershell (PowerShell):

Запуск кода powershell как службы - PowerShell
Доброго времени суток, форумчане. Помогите добить решение. Есть определенные службы, которые работают в ОС Win7x64. Необходимо...

Запуск PowerShell при старте - PowerShell
windows 10 Добавил в папку автозагрузки скрипт, при запуске любого простого скрипта из папки автозагрузка оно запускается на секунду и...

Запуск скрипта PowerShell на удаленном сервере - PowerShell
Коллеги помогите, появилась задача связанная с запуском скрипта который находиться на удаленном компьютере и надо именно запускать скрипт...

Запуск нескольких ps1 скриптов через Powershell - PowerShell
Всем привет. Есть папка в которой находятся ещё папки, в этих папка лежат файлы с одинаковым именем. Например ...

Запуск скрипта PowerShell при входе в систему - PowerShell
Всем добрый день. Прошу сильно не пинать, а помочь разобраться или хотя бы направить в нужное направление. Есть скрипт на Powershell...

Запуск нескольких команд powershell в одной строке - синтаксис - PowerShell
Вообщем написал небольшой скрипт для взаимодействия с serial портом powershell $port = new-Object System.IO.Ports.SerialPort...

4
diadiavova
1843 / 979 / 270
Регистрация: 11.04.2015
Сообщений: 1,814
Записей в блоге: 31
04.06.2017, 14:00 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Victoros6666 Посмотреть сообщение
The generated type is not public
Ну видимо в пятой строчке надо добавить слово public
C#
1
public class Program
1
Victoros6666
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 92
04.06.2017, 16:13  [ТС] #3
т.е. все классы или методы к которым обращаемся через Powershell должны быть public?
0
diadiavova
1843 / 979 / 270
Регистрация: 11.04.2015
Сообщений: 1,814
Записей в блоге: 31
04.06.2017, 17:23 #4
Цитата Сообщение от Victoros6666 Посмотреть сообщение
т.е. все классы или методы к которым обращаемся через Powershell должны быть public?
Для того, чтобы код на C#, запсанный текстом, можно было исполнить, его сначала надо скомпилировать. То есть сначала из этого кода создается сборка, потом уже создаются объекты, но естественно это делается извне. То есть да: все, к чему ты хочешь достучаться извне должно быть public.
1
dirigar
9 / 9 / 1
Регистрация: 05.07.2015
Сообщений: 32
05.06.2017, 13:34 #5
Можно еще в exe-шник скомпилить
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$power =  @"
using System; 
namespace example 
{ 
    class Program 
    { 
        public static void Main(string[] args) 
        { 
            string s = "abcd efgh"; 
            Console.WriteLine("Было: " + s); 
            s = s.Remove(0, 1); 
            Console.WriteLine("Стало: " + s); 
            Console.ReadKey(); 
        } 
    } 
}
"@
#################################################################
$pars = New-Object CodeDom.Compiler.CompilerParameters -Property @{               #  параметры компиляции
    GenerateExecutable = $true
    OutputAssembly     = (Join-Path $pwd "program.exe")
    GenerateInMemory   = $true
};
#провайдер компилятора (в данном случае C#)  #   CodeProvider or Microsoft.VisualBasic.VBCodeProvider
$prov = New-Object Microsoft.CSharp.CSharpCodeProvider                  
$exec = $prov.CompileAssemblyFromSource($pars, $power)
##################################################################################
if ( $exec.NativeCompilerReturnValue) {
    $exec.Errors | Out-String | Write-Host -fore Red
} else {
    Start-Process -FilePath $pars.OutputAssembly
}
2
05.06.2017, 13:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2017, 13:34
Привет! Вот еще темы с ответами:

PowerShell vs PowerShell ISE - PowerShell
Скажите, пожалуйста, чем PowerShell отличается от PowerShell ISE. Спасибо.

Powershell и AD - PowerShell
Доброго времени суток! Первый раз в жизни взялся за Powershell и столкнулся со следующей задачей: 1. Спрашивает у администратора...

PowerShell - PowerShell
PowerShell Windows PowerShell — это новая оболочка командной строки на основе задач и язык сценариев. Она специально разработана для...

Видеолекции по PowerShell - PowerShell
Смотрим видео " Сергей Шеин Автоматизация администрирования Windows Server 2008 с помощью Windows PowerShell ". Дальше по желанию, человек...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.