Форум программистов, компьютерный форум, киберфорум
Наши страницы
PowerShell
Войти
Регистрация
Восстановить пароль
 
Victoros6666
0 / 0 / 1
Регистрация: 28.06.2016
Сообщений: 102
#1

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

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

Все добрый день.
Помогите разобраться с ошибкой.
http://www.cyberforum.ru/powershell/thread1978622.html
запускаю код 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 при старте
windows 10 Добавил в папку автозагрузки скрипт, при запуске любого простого...

Запуск программы от другого пользователя Powershell
День добрый. Подскажите как правильно написать скрипт. Который бы пользователь...

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

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

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

4
diadiavova
3644 / 1232 / 392
Регистрация: 11.04.2015
Сообщений: 2,304
Записей в блоге: 33
04.06.2017, 14:00 #2
Лучший ответ Сообщение было отмечено Victoros6666 как решение

Решение

Цитата Сообщение от Victoros6666 Посмотреть сообщение
The generated type is not public
Ну видимо в пятой строчке надо добавить слово public
C#
1
public class Program
1
Victoros6666
0 / 0 / 1
Регистрация: 28.06.2016
Сообщений: 102
04.06.2017, 16:13  [ТС] #3
т.е. все классы или методы к которым обращаемся через Powershell должны быть public?
0
diadiavova
3644 / 1232 / 392
Регистрация: 11.04.2015
Сообщений: 2,304
Записей в блоге: 33
04.06.2017, 17:23 #4
Цитата Сообщение от Victoros6666 Посмотреть сообщение
т.е. все классы или методы к которым обращаемся через Powershell должны быть public?
Для того, чтобы код на C#, запсанный текстом, можно было исполнить, его сначала надо скомпилировать. То есть сначала из этого кода создается сборка, потом уже создаются объекты, но естественно это делается извне. То есть да: все, к чему ты хочешь достучаться извне должно быть public.
1
dirigar
10 / 10 / 1
Регистрация: 05.07.2015
Сообщений: 33
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 в одной строке - синтаксис
Вообщем написал небольшой скрипт для взаимодействия с serial портом powershell...

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

Powershell и AD
Доброго времени суток! Первый раз в жизни взялся за Powershell и столкнулся со...

запуск скрипта powershell
Добрый день! Хочется написать скрипты на powershell а потом их запускать, но...


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

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

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