필자는 유능한 C# 프로그래머이고 PowerShell은 초보자입니다. 나는 그것이 무엇에 좋은지 궁금하다. 프로그래머의 툴이나 관리자의 것일까 요?powershell은 무엇에 좋은가요?
경험을 공유하십시오. C# 도구보다 .NET 어셈블리를 사용하여 스크립트를 작성하는 것이 더 쉬울 때가 있습니까? 진짜 생산 작업은 무엇을 위해 사용합니까?
UPD :는 아마 질문해야한다 "그것이 무엇 C#을하지 배치에 비해 에 좋은".
필자는 유능한 C# 프로그래머이고 PowerShell은 초보자입니다. 나는 그것이 무엇에 좋은지 궁금하다. 프로그래머의 툴이나 관리자의 것일까 요?powershell은 무엇에 좋은가요?
경험을 공유하십시오. C# 도구보다 .NET 어셈블리를 사용하여 스크립트를 작성하는 것이 더 쉬울 때가 있습니까? 진짜 생산 작업은 무엇을 위해 사용합니까?
UPD :는 아마 질문해야한다 "그것이 무엇 C#을하지 배치에 비해 에 좋은".
C# 도구를 작성하면 일반적으로 Visual Studio 프로젝트 (또는 다른 IDE에서 프로젝트를 설정하거나이 작업을 "수동으로"수행해야하는 경우 C# 컴파일러를 호출하기위한 빌드 스크립트가 필요합니다). 특정 작업을 수행하는 데 너무 많은 오버 헤드가 발생하고 단순한 하나의 파일 소스 및 프로그램 만있는 솔루션 만 있으면 PowerShell 스크립트가 더 나은 대안이 될 수 있습니다.
편집 : 내 대답 CW을하고, 그래서 당신은 PowerShell 스크립트를 선호 할 사람이 왜 여기에 몇 가지 이유를 추가 할 수 있습니다 C#을 솔루션 전년도 :
감사합니다. 하지만 일반적으로 Visual Studio를 시작하는 데는 문제가 없습니다. PowerShell보다 C#을 디버깅하는 것이 훨씬 쉽지 않은가요? – zzandy
문제가되지는 않지만 네트워크 관리자에게는 문제가 더 작고 간단 해짐에 따라 오버 헤드가 많이 쌓일 수 있습니다. –
PowerShell도 디버깅 할 수 있습니다. 설치에는 디버깅 기능이있는 IDE 인 "Windows PowerShell ISE"가 함께 제공됩니다. 물론 Visual Studio만큼 편안하지는 않지만 PowerShell 스크립트를 디버깅하는 것으로 충분합니다. –
Powershell은 마우스를 사용하는 사용자를 필요로하는 여러 가지 다른 작업을 수행하는 데 사용할 수있는 강력한 도구입니다 (뿐만 아니라).
예를 들어, 등등 SQL 서버, 익스체인지, 쉐어 포인트 (SharePoint)와 같은 MS 서버 제품의 최신 버전은 예를 들어 수 PowerShell로, 쉽게 빛, PowerShell을 사용할 수있는 풍부한 API를 노출 :
단순히 배치 파일에서 수행 할 수 없었던 모든 작업.
자동화에 좋습니까? 그러나 PowerShell과 C#을 비교하는 방법은 무엇입니까? C#에서 몇 가지 코드를 작성하는 것이 문제가 아니라면 powershell에서 어떤 이점을 제공합니까? – zzandy
는 powershell과 C#을 비교하는 것이 합리적이지 않습니다. 우리는 Pascal과 명령 프롬프트를 비교합니까? 작은 powershell 스크립트로 무언가를 자동화 할 수 있다면 그것을 할 수 있으며 동일한 결과를 얻기 위해 응용 프로그램, 창 또는 콘솔을 만들어 빌드하고 컴파일하고 디버깅 할 필요가 없습니다. –
약간 더 많은 시스템 관리자 도구이지만, 약간 있습니다. 내가 말, PowerShell을 통해 선택할 것
장소, C 번호는 다음과 같습니다 어디서나
우리는 우리의 하룻밤 수용 테스트를 자동화하는 결과를 컴파일 관련 최신 전자 우편 팀과 웹 페이지를 업데이트하는 데 사용했다.
NuGet은 Powershell을 사용하여 솔루션에 패키지 추가/제거를 자동화합니다. (그리고이 과정에서 Visual Studio를 직접 자동화 할 수있는 powershell 콘솔이 제공됩니다.)
컴파일 된 언어로 얻을 수있는 쓰기 -> 디버그 -> 수정주기가 아닌 대화식으로 스크립트를 향상시킬 수있는 기능 그것은 간단한 스크립트를 노크하는 것이 빠릅니다.
때는 C# 도구에 비해 .NET 어셈블리를 사용하여 스크립트를 작성하는 것이 더 쉽습니다?
아, 그게 전부입니다. PowerShell은 배치 파일과 .NET 세계를 구분합니다. PowerShell은 ".NET의 강력한 기능을 모두 갖춘 새로운 명령 인터프리터를 작성하고 완전히 동적이었으며 사람들이 명령 셸에서 원하는 대부분을 얻었습니까?"라는 질문에 대답했습니다.
그래서 PowerShell은 언제 C#을 사용합니까?다른 앱을 통합하거나 조율하는 소형 앱의 경우 훨씬 편리합니다. 컴파일 할 필요가 없기 때문에 편리합니다. 또한 데이터를 다른 스크립트 및 스크립틀릿으로 전달하는 표준 방식을 이미 갖추고 있으므로 쉽게 사용할 수 있습니다. 사람들 (PowerShell을 아는 사람)이 이해할 수 있어야합니다.
전 PowerShell 순수 커맨드 릿을 생성하고 C#에서 일부 생성했습니다. 일반적으로 C#에서했던 것들은 더 복잡하고 더 나은 방식으로 코드를 유지하기 위해 클래스 등으로 여러 파일을 만드는 것이 더 쉽습니다.
C#은 Visual Studio의 첫 번째 시민이며 PowerShell은 PowerShell과 비교하여 C# 프로젝트 테스트를 만드는 것이 더 쉽습니다.
PowerShell에서 모든 작업을 수행하면 누구나 스크립트를 편집 할 수 있다는 장점이 있습니다.
+1은 '모든 사용자가 내 스크립트를 수정할 수 있음'입니다. 좋은 관찰. – akauppi
@akauppi 감사합니다. :) –
는 내가 자주 변경해야 할 수 있습니다 작은 것들에 대한 C#을,보다 더 나은 생각합니다. 대부분 내 빌드 및 자동화 설정 부분에 주로 사용됩니다. PowerShell을 선호하는 이유는 필자의 스크립트가 Visual Studio에서 거의 항상 dll을 필요로하기 때문입니다. 이제는 C# 앱인 경우 새 버전의 Visual Studio가 나오면 새 참조를 사용하여 다시 컴파일 한 다음 필요에 따라 게시해야합니다. 그러나, 그것은 powershell 경우, 나는 단순히 스크립트에서 DLL의 경로를 변경할 수 있으며 모든 것이 좋습니다. 또한 파일 파싱 및 다른 perl-ish 유형 작업을 위해 훨씬 쉽게 작업 할 수 있습니다.
전 PowerShell을 Monad라고 부르는 베타 기간 이후로 사용하고 있습니다. 필자는 Korn Shell을 이용한 자동화/스크립팅을 포함하여 유닉스에서 상당량의 개발 작업을 수행했습니다. PowerShell은 Korn Shell의 Windows와의 약간의 임피던스 불일치에 지쳐 있었기 때문에 신의 선물이었습니다. 예를 들어 네트워크 공유 경로를 지정하는 것은 특히 총액이 "\\\\\\server\\\\share"
IIRC였습니다.문자열이 평가받는 횟수에 따라 백 슬래시를 몇 번이나 회피했는지에 대한 추측을위한 게임이었습니다. 내가 CSPROJ 파일의 내용을 검색 할 큰 소스 디렉토리를 통해 Grepping
나는 같은 자동화 작업을 많이하기위한 PowerShell을 사용합니다.
사용자 정의 명령 행 유틸리티를 교체하려면 : 당신은 당신이 쓰는 데 사용되는 모든 그 작은 명령 행 유틸리티를 대체 할 수있는 좋은 방법으로 PowerShell을 사용할 수 있습니다
. 이것에 대해 생각하다. PowerShell은 대부분의 .NET Framework에 대한 액세스를 제공하는 매우 강력한 스크립트 언어입니다. 특히 매개 변수 파싱에 탁월합니다. 즉, 명명 된 매개 변수, 위치 매개 변수, 선택적 매개 변수, 스위치 매개 변수, 파이프 라인 바인딩 매개 변수, 매개 변수 유효성 검사 등을 제공하는 기본 제공 매개 변수 분석 엔진이 있습니다. 이제 일반적인 명령 행 유틸리티의 코드가 매개 변수 구문 분석과 실제 기능에 얼마나 많은가를 고려하십시오. 필자는 커맨드 라인 유틸리티를 작성하는 것을 거의 중단했습니다. (특히 복잡한 것이 아니라면 VS 디버거를 이길 수는 없습니다.) PowerShell에서 모든 매개 변수 구문 분석을 처리하도록했습니다. 또한 PowerShell 2.0을 사용하면 적절한 형식의 주석으로 스크립트를 꾸미기 만하면 문서/사용법을 유틸리티에 쉽게 추가 할 수 있습니다. 나는 또한 .NET REPL로 PowerShell을 사용
:
"{0,20:F1}" -f 41.22
과 같은 것을 시도해보십시오.또한 C# 응용 프로그램에서 PowerShell 엔진을 쉽게 호스팅 할 수 있습니다. 스크립트를 명령 줄로 만들 수있는 기능을 최종 사용자에게 제공하면이 기능이 유용합니다. 이러한 기능을 PowerShell cmdlet으로 작성할 수 있습니다 (C#의 경우). 이러한 cmdlet은 다음 명령 줄에서 직접 사용할 수 있으며, 당신이 당신의 GUI 응용 프로그램에서 PowerShell을 호스트하는 경우, 당신은 거기에서 코드의 동일한 집합에 액세스 할 수 있습니다 예를 들면 : 당신이 PowerShell을 어떻게 사용합니까 [의
private bool VerifyPowerShellScriptSignature(string path)
{
using (var runspaceInvoker = new RunspaceInvoke())
{
Collection<PSObject> results =
runspaceInvoker.Invoke("Get-AuthenticodeSignature " + path);
Signature signature = results[0].BaseObject as Signature;
return signature == null ? false :
(signature.Status == SignatureStatus.Valid);
}
}
PowerShell 2.0에는 강력하고 유용한 Add-Type Cmdlet도 추가되어 있으므로 JIT 컴파일 된 CLR 코드를 다양한 언어로 PowerShell에 직접 통합 할 수 있습니다. evens는 P/Invoke의 가능성을 추가합니다! –
+1 우수 게시글입니다. Powershell이 .net 개발자에게 유용 할 수있는 방법에 대한 좋은 설명 –
가능한 중복? ] (http://stackoverflow.com/questions/8722/how-do-you-use-powershell) – Helen