PowerShell 공부

저는 이번 주 부터 회사 내에서 개발조직이 아닌, DevSecOps 팀으로 이동하여 진정한 잡부로 거듭나기 위한 빌드업을 시작했습니다.

요즘은 도메인자체가 넓어지고 각 분야마다 전문화 되는 레이어가 너무 많아져서 개발자들도 하나만 쭉하고 싶은 트랙과 여러 가지를 두루두루 아는 트랙이 좀 갈리는 것 같은데 저는 아무래도 후자의 잡부에 대해 니즈가 많은 편입니다.

기술스택이 10년간 Only Windows Forms와 WPF로만 되어있어서 그런 것도 영향이 크다고 생각합니다…ㅠ

저의 첫 업무로는 PowerShell 스크립트를 유지보수하는 것인데 평소에 PowerShell에 관심이 많았던 상태라 레거시 PowerShell 스크립트를 Copilot을 이용해서 구조를 잡는 업무를 진행하는데 너무 재미있습니다.

주로 PowerShell에서 ActiveDirectory에 관련된 프로그램들을 사용중입니다.
Windows Native Desktop Application을 10년 가까이 개발했지만 Windows를 잘 몰라서 항상 니즈가 있었는데 이 기회에 ActiveDirectory도 접하게 되어서 더욱 좋은 듯 합니다.

PowerShell로 Class도 만들어보고…interface까지 된다는 것도 처음 알았습니다.
일단 Array로 선언된 타입에 += 연산자로 값을 추가한다는 것은 C#만 해본 저에겐 좀 신세계였습니다…한참 헤맸네요 이게 무슨 코드인가…

정보 공유는 아니지만 뉴비가 된 기분으로 소모임에…신세계를 접하여 근황전하러 왔습니다.

13 Likes

PowerShell이 정말 좋은 부분이, Remoting API가 내장되어있다는 점입니다. 사용하기 다소 까다로운 점은 있지만, WinRM 프로토콜을 체결하고 열어놓고 사용하면, RDP가 아닌 명령줄 스타일로 원격 시스템을 제어할 수 있고, 최근에 PowerShell Core로 넘어오면서부터는 리눅스나 맥 OS도 파워셸 수준에서 제어가 가능해졌습니다. 이 기능을 응용해서 HashiCorp 같은 경우는 Packer로 Windows AMI나 VM Image를 클라우드에서 빌드하는 일도 대행해주기도 합니다.

그리고 PowerShell 자체적으로도 C#/VB.NET 컴파일러가 내장되어있어서, C#/VB.NET 코드 조각을 문자열에 담아놓고 코드를 빌드에서 쓰는 것도 가능합니다. :smiley:

5 Likes

오, 처음 들어본 기능인데 어떻게 할 수 있나요?

키워드들이 저에게 너무 신세계입니다…ㅋㅋ
열심히 PowerShell Expert가 되어서 이해할 수 있도록…해보겠습니다.

Remoting API라는 것은 처음 들어보고… 그저 저에게 원격의 개념을 갖고 있는 powershell 기능은 Invoke-Command로 원격 PC에서 스크립트를 실행하는 정도로밖에 이해가 안되네요ㅠㅠ