에서 PowerShell을 실행하고 있습니다.NET 코어
.net-core에서 PowerShell 스크립트를 실행할 수 있는 방법이 있습니까?
새로운 .net 코어 'website\api'에서 PowerShell 스크립트를 실행하려고 합니다..net에서 PowerShell을 실행하기 위해서 제가 알 수 있는 바로는
시스템.관리.자동화 네임스페이스.
.netcore의 경우에는 불가능합니다(또는 적절한 추가 방법을 찾지 못했습니다).이 DLL을 프로젝트에 추가하는 것을 목적으로 하는 몇 개의 NuGet 패키지가 있지만 이 패키지들은 .net core와도 호환되지 않습니다..net core에서 이것을 할 수 있는 방법이 있습니까?다음은 제가 시도해 본 몇 가지 링크이지만 .net 코어와 관련된 링크는 없습니다.
http://www.powershellmagazine.com/2014/03/18/writing-a-powershell-module-in-c-part-1-the-basics/
시스템 관리를 참조하는 중입니다.비주얼 스튜디오에서 자동화.dll
https://www.nuget.org/packages/System.Management.Automation/
현재 잘 지원되고 있는 것으로 보입니다.NET Core 2.0 및 PowerShell 6 베타 3(Beta 1 및 2에서도 지원되었지만 쉽게 지원되지는 않음). 다음은 GitHub 레포의 Host PowerShell 설명서 링크입니다.
그리고 그들은 그것이 와 함께 실행되는 것을 보여주는 좋은 샘플 애플리케이션을 제공합니다.NET Core 2.0 및 PowerShell Core v6.0.0-beta.3 이상:
https://github.com/PowerShell/PowerShell/tree/master/docs/host-powershell
올바른 패키지를 NuGet 패키지 목록에 넣으려면 파워셸 코어를 새로운 NuGet 저장소 위치로 추가해야 했습니다.
https://powershell.myget.org/F/powershell-core/api/v3/index.json
그런 다음 NuGet 패키지를 설치할 수 있었습니다.
install-package microsoft.powershell.sdk -version 6.0.0-rc
install-package microsoft.powershell.commands.diagnostics -version 6.0.0-rc
install-package microsoft.wsman.management -version 6.0.0-rc
이 세 가지 의존성이 모두 필요했고 asp.net 코어 MVC Web Application에서 다음과 같은 간단한 PowerShell 명령을 실행할 수 있었습니다.
public class PowerShellHelper
{
public void Execute(string command)
{
using (var ps = PowerShell.Create())
{
var results = ps.AddScript(command).Invoke();
foreach (var result in results)
{
Debug.Write(result.ToString());
}
}
}
}
공식적인 답변은 현재 자체 애플리케이션에서 PowerShell Core를 실행할 수 없다는 것입니다.아마도 가장 큰 문제는 그것일 것입니다.NetCore가 없습니다.AppDomain.GetAssemblies()
, 에 고정되어 있을 수도 있습니다.넷 코어 1.2.
@Roman과 @JamesEby에게 감사드립니다.
만약 우리가 dotnet core 2.0 이후를 사용할 수 없다면 사용할 수 있습니다.Process
Windows에서 PowerShell.exe를 실행할 수 있습니다.
길은C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
사용할 수 있습니다.Process
이 강령에
var process = new Process
{
StartInfo = new ProcessStartInfo(@"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe",
script)
{
WorkingDirectory = Environment.CurrentDirectory,
RedirectStandardOutput = true,
CreateNoWindow = true,
}
};
process.Start();
var reader = process.StandardOutput;
return reader.ReadToEnd();
스크립트 값은 PowerShell 스크립트 및reader.ReadToEnd()
power shell 출력 텍스트를 반환합니다.
참조: https://stackoverflow.com/a/30846513/6116637
James Eby의 답변은 맞지만, 제가 유용하다고 생각한 새로운 정보가 있습니다.
이제 PowerShell Core를 크로스 플랫폼에서 사용할 수 있습니다.그리고 그것은 오픈소스 입니다!
다음은 Microsoft의 기사에서 몇 가지 유용한 점입니다.
이제 PowerShell은 macOS와 리눅스를 공식적으로 지원합니다.
- Windows 7, 8.1 및 10
- 윈도우즈 서버 2008 R2, 2012 R2, 2016
- 윈도 서버 반기 채널
- 우분투 14.04, 16.04 및 17.04
- 데비안 8.7+ 및 9
- 센트OS 7
- 레드햇 엔터프라이즈 리눅스 7
- OpenSUSE 42.2
- 페도라 25, 26
- macOS 10.12+
로깅
macOS에서 PowerShell은 기본 os_log API를 사용하여 Apple의 통합 로깅 시스템에 로깅합니다.리눅스에서 PowerShell은 유비쿼터스 로깅 솔루션인 Syslog를 사용합니다.
SSH 기반 PowerShell 원격 설치
PowerShell Remote Protocol(PSRP)은 기존의 WinRM 기반 PSRP와 더불어 SSH(Secure Shell) 프로토콜과도 연동됩니다.출처
변경사항 깨기 링크
언급URL : https://stackoverflow.com/questions/39141914/running-powershell-from-net-core
'source' 카테고리의 다른 글
중심 HTML 입력 텍스트 필드 자리 표시자 (0) | 2023.09.08 |
---|---|
스핑크스의 오토독을 사용하여 클래스의 __init__(self) 메서드를 문서화하는 방법은 무엇입니까? (0) | 2023.09.08 |
Spring Data JPA 저장소에서 제네릭 사용 (0) | 2023.09.08 |
MariaDB에서 대용량 ibd 파일에 대해 테이블 최적화 (0) | 2023.09.08 |
RGB 값이 아닌 헥스 컬러 값을 얻는 방법은? (0) | 2023.09.08 |