PowerShell은 배치 파일에 적합한 업그레이드입니까?
서버 릴리스를 배치 파일(Windows)을 사용하여 zip 파일로 패키징하고 명령줄 버전의 WinZip을 실행합니다.이전에 우리는 이런 종류의 일을 "손으로" 했지만, 저는 배치 파일로 자동화하는 과정을 개발했습니다.
우리 제품이 복잡하기 때문에 배치 파일이 상당히 복잡해졌습니다(즉, 이번에 공개하는 섹션은 어디인가요?구성 파일도 공개하는 건가요?) 배치 파일로 인해 답답한 한계에 봉착하기 시작했습니다.
배치 파일의 "업그레이드"로 PowerShell을 조사하는 것이 좋을까요?아니면 대부분의 작업이 DOS 명령어를 발사하는 것임을 감안할 때 이는 완전한 오버킬입니까?
보너스: PowerShell이 소비할 수 있습니다.NET 어셈블리?마찬가지로 샤프집으로 지퍼를 열어도 될까요?
실행 가능한 솔루션이 있다면 파워셸에 갈 필요가 없습니다.그렇기는 하지만, 변경하거나 프로세스를 개선할 계획이라면 파워셸을 선택하는 방법으로 적극 추천합니다.파워셸은 접근할 수 있습니다그물형 조립품들이... 대부분입니다.어떤 어셈블리는 다른 어셈블리보다 더 어렵게 구성되어 있습니다.
파워셸을 보기로 결정했다면 여기서 몇 가지 자료를 확인할 수 있습니다.
처음에 저는 PowerShell에 대해 매우 흥분했습니다.마지막으로 강력한 네이티브 셸이 Windows에 있습니다.하지만 여러분이 가장 좋아하는 유닉스 셸인 PowerShell과 비교하면 너무 장황하다는 것을 금세 깨달았습니다.간단한 일을 하는 것조차 Win32용 bash 및 GNU 도구로 할 수 있는 것에 비해 타이핑이 너무 많이 걸립니다.
셸이 다양한 유형에 대해 알고 있다는 아이디어는 마음에 들지만, 그만큼 추가 작업을 해야 한다면 다양한 유닉스 스트림 편집기로 필요한 데이터를 얻는 것이 더 좋습니다.
편집: 방금 PowerShell을 다시 살펴보았는데, 기존의 유닉스 스타일 도구에는 사용할 수 없는 유용한 기능들이 있다는 것을 인정합니다.
일례로 PowerShell은 모든 명령을 소유하고 있으며, 이는 훨씬 일관성 있는 기능 집합을 제공할 수 있다는 것을 의미합니다.파라미터는 균일하게 처리되므로 와일드카드를 사용하여 명령어, 파라미터 등을 검색할 수 있어 매우 유용합니다.
두 번째 큰 특징은 PowerShell을 사용하면 Windows 레지스트리, 인증서 저장소 등의 스트림 편집기에서 일반적으로 사용할 수 없는 소스를 열거할 수 있다는 점입니다.물론 이를 텍스트로 제공하는 툴을 사용할 수도 있지만, PowerShell 접근 방식은 매우 우수한 IMO입니다.
PowerShell Community Extensions(PSCX), 무료로 제공되며 Zip cmdlet이 포함되어 있습니다.
쓰기-집
쓰기-BZip2
쓰기-GZip
http://www.codeplex.com/PowerShellCX
PowerShell 제작자이자 설계자인 Jeffrey Snower와 함께 이 프레젠테이션/토론을 보아야 합니다.기술적인 세부 사항(많은 "와우" 순간을 가질 수 있음)에 놀라지 않는다면 제프리의 열정에 놀랄 것입니다 :).기본 사항만 익히면 PowerShell을 사용하면 생산성이 매우 높아집니다.
정답은 YES - PowerShell이 사용할 수 있습니다.NET 어셈블리.대리인에게 전화를 연결해야 할 경우 v1과 관련된 약간의 재미있는 비즈니스가 있습니다. v2를 사용하면 훨씬 더 깨끗해집니다.
LoadFile / LoadAssembly를 호출하여 메모리에 적절한 라이브러리를 가져오면 됩니다.
[반성.어셈블리]::LoadFile('/path/to/sharpzip.dll')$zip = 새 개체 ICS harpCode.샤프집립.Zip.FastZip우편 요금 $zipZip 만들기('C:\Sample.zip', 'C:\BuildFiles\', 'true', '^au')# 참고 - 실제로 이 코드를 테스트한 것은 아닙니다.# SharpZip을 다운로드한 것이 아니라 참고문헌만 읽습니다.
또한 PowerShell Community Extensions는 write-zip과 같은 다양한 압축 방식을 지원합니다.
제가 사용하는 긴 빌드 배치 파일 중 하나를 파워셸로 교체하려고 했습니다.저는 그것이 고통스러웠습니다. 최소한 그 당시에는 문서화가 재미있는 말들과 그것으로 할 수 있는 멋지고, 그럴듯한 것들에 초점을 맞췄지만, "간단한 일들을 해내는" 범주에서는 부족했습니다.작동은 시켰는데 에러 처리가 너무 흔들렸어요.
YMMV, 파워쉘을 시도해보세요. 즐기실 수도 있습니다.그러나 빌드 배치를 업데이트하기 전에 사용해 보십시오.
내 해결책: C# 콘솔 애플리케이션을 사용합니다.심각한 로깅, 예외 처리, 유틸리티 기능을 사용할 수 있고, 뭔가가 작동하지 않으면 진짜 디버거를 사용할 수 있습니다.제가 수정하고 싶은 첫 번째 해결책입니다.
파워셸은 잘 모르겠지만 IronPython과 같은 것을 사용하는 것이 좋습니다(에 액세스하려면).NET 라이브러리) 또는 일반 파이썬?거의 제한 없이 완전한 프로그래밍 언어를 사용할 수 있습니다.
한편으로는 효과가 있으면 그냥 놔두세요.하지만 이는 시간이 지남에 따라 추가될 것이며, 배치 파일을 편집해야 하는 최종 후임자/동료도 이를 이해해야 할 것입니다.프로그래밍 배경 출신이라면 Powershell의 기능을 통해 스크립트를 훨씬 더 짧고 읽기/유지보수하기가 쉬워집니다(예: if 문과 for/while 루프가 가득 차 있는 경우도 있음).반면에 프로그래밍에 너무 익숙하지 않다면, 많은 사람들이 언뜻 보기에는 파워셸을 좀 부담스러워합니다.
에 대해서.NET 파트, 파워셸은 위에 세워집니다.NET에 접속할 수 있습니다.NET 어셈블리(그러나 사용 가능한 cmdlet이 있는지 항상 확인해야 합니다).
저는 오라일리가 출간한 리 홈즈의 "The Powershell Cookbook"이라는 책을 추천합니다.일반적인 작업에 사용할 수 있는 "레시피"를 제공합니다. 이렇게 하면 스크립트 구현 시간이 빨라질 수 있고 도중에 파워셸을 가르쳐 줄 수 있습니다.
언급URL : https://stackoverflow.com/questions/474849/is-powershell-a-good-upgrade-for-a-batch-file
'source' 카테고리의 다른 글
C/C++ 효율적 비트 배열 (0) | 2023.10.14 |
---|---|
MySQL 데이터베이스의 최대 테이블 크기 (0) | 2023.10.14 |
이것이 의미하는 바는 무엇일까요? 무효가 되는 포인터는 다른 포인터와 결코 동일하지 않을 것입니다. (0) | 2023.10.14 |
Windows에서 npm의 캐시 경로를 변경하거나 캐시를 완전히 비활성화하려면 어떻게 해야 합니까? (0) | 2023.10.14 |
CentOS 6.2에서 MySQL 버전을 5.1에서 5.5로 업데이트 (0) | 2023.10.14 |