Q & A

시삽: 레드플러스 님 
게시판 이동:
 제목 : Re : Re : Re : Blazor Server side 에서 PowerShell 파일 실행 관련 문의 드립니다.
글번호: 845
작성자: 김정곤
작성일: 2020/06/09 오전 5:06:00
조회수: 2619

이 문제에 대해 해결 방법을 찾기는 햇습니다.

그런데 왜 이렇게 해야만 정상적으로 실행되는지는 모르겠습니다.

PowerShell 관리자 권한으로 실핼해서 설정해 주면 되야 하는데 코드 내에서 ExecutionPolicy 를 해줘야 만 정상적으로 스크립트 파일을 읽어서 실행되고 값을 리턴받을 수 있습니다.

using PowerShell ps1 = PowerShell.Create();
Collection<PSObject> results = ps1.AddScript("D:\psfile.ps1").Invoke();

using PowerShell ps2 = PowerShell.Create();
ps2.AddScript("Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted").Invoke();

foreach (PSObject obj in results)
{
   stringBuilder.AppendLine(obj.ToString());
}
....

좀더 찾아 보기는 해야 하지만 일단 실행됩니다.

감사합니다.

 


On 2020-06-09 오전 2:17:00, '김정곤' wrote:

 

 


답변 감사합니다.

알려 주신 부분을 참고로 테스트를 했습니다. 

"Get-Command" 로는 정상적으로 리턴되는 것을 확인 했습니다.

다만, PowerShell 스크립트 파일을 로드해서 실행 하면 여전히 오류가 발생합니다.

오류는 크게 두가 입니다.

1]

ERROR : File D:\Cal-Plus1.ps1 cannot be loaded because running scripts is disabled on this system.

이 부분은 Set-ExecutionPolicy 를 설정했지만 계속 같은 오류가 발생합니다.

2]

ERROR : 외 발생: 'System.Management.Automation.PSSecurityException'(System.Management.Automation.dll)

이 부분도 csproj 속성에 <PackageReference Include="System.Management.Automation" Version="7.0.1" /> 추가해 주었으나 같은 에러가 계속 발생합니다.

 

조금 이해가 안되는 부분은 어느분이 만든 C# WinForm 소스로 테스트를 하면 잘 됩니다.

.Net Core하고는 차이가 있는 것 같습니다. 

더 찾아봐야 할 것 같습니다.

감사합니다.

 


On 2020-06-08 오전 5:36:00, '레드플러스' wrote:

 

 


 

안녕하세요. 강의 들어주셔서 감사합니다.

 

우선, 

제가 질문주신 부분은 경험이 없는 부분이라, 정확한 답변인지는 모르겠으나

다음 경로를 참고해 보았습니다.

https://youtu.be/lVXK9w84cIU

 

그런 후 제 Blazor 강의 데모 소스인 다음 링크에 적용해 보았습니다.

https://github.com/VisualAcademy/BlazorApp/blob/master/BlazorApp/Pages/Qna/PowerShellRunDemo.razor

 

NuGet 패키지는 다음을 설치했구요.

샘플 코드는 다음과 같습니다. 위 GitHub 소스를 참고하세요.

그리고, 실행결과는 제 머신에서는 다음과 같이 나왔습니다.

 

일단은 제가 실행해 본 내용은 여기까지구요.

제가 PowerShello과 .NET Core를 연동해 본 첫 번째 소스임을 강조해드리며,

이 이상의 능력은 제가 가지고 있지 않음을 추가로 말씀드립니다^^.

 

그럼, 참고해주세요.

 

감사합니다.

 

 

 

 

 


On 2020-06-08 오전 3:14:00, '김정곤' wrote:

 

 


안녕하세요.

토요일 C# 강의 잘 들었습니다.

 

저희는 주로 C# 과 ASP.Net 으로 개발을 하고 있습니다.

최근 SPA 지원문제로 Blazor를 사용 하기로 하고 여러가지 테스트를 진행 하고 있습니다.

그 중 PowerShell 파일을 테스트 중에 문제가 있어서 문의 드립니다.

간단한 PowerShell 파일 test.sp1 파일을 만들었습니다.

[ test.sp1 파일 ] 

param (
[Parameter(Mandatory=$true)]$A,
[Parameter(Mandatory=$true)]$B
)

$C = ([int]$A + [int]$B)
return $C

 

[Blazor : Index.razor]

public void GetPowerShellTest()

{

string command = @"& ""D:\Cal-Plus.ps1"" ";
IDictionary parameters = new Dictionary<String, Int32>();
parameters.Add("A", 1);
parameters.Add("B", 5);

PowerShell ps = PowerShell.Create();
ps.AddScript(command);
ps.AddParameters(parameters);

foreach (var result in ps.Invoke())
{
     Trace.WriteLine(result);
}

}

parameter 로 두개의 값을 전달하고 그 결과를 return 받으려고 합니다.

설치 한 Nuget pakage 는 Microsoft.PowerShell.Native, Microsoft.PowerShell.SDK, Microsoft.Management.Infrastructure 입니다.

값이 제대로 넘어가는 것 처럼 보이지만 실제 실행 하면 아무런 리턴 값이 없습니다.

참고가 될만 한 자료가 있을까요?

 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트
  Administrator
  2020-06-09 오전 7:43:51
PowerShell 관련해서는 저도 경험이 부족한 부분이라,

일단 1차적으로 해결하셨다니, 다행이네요.

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 닷넷노트 소스 문의 - 김준호 2020-07-04 2405
  Blazor Server side 에서 PowerShell 파일 실행 관련 문의 드립... - 김정곤 2020-06-08 2429
  Re : Blazor Server side 에서 PowerShell 파일 실행 관련 ... - 레드플러스 2020-06-08 2565
  Re : Re : Blazor Server side 에서 PowerShell 파일 실... - 김정곤 2020-06-09 2429
현재글 Re : Re : Re : Blazor Server side 에서 PowerShell...(1) - 김정곤 2020-06-09 2619
다음글 질문있습니다. - Cloudworker 2020-06-07 2428
 
손님 사용자 Anonymous (손님)
로그인 Home