PowerShell 7

[Active Directory] 부서장 기준으로 소속인원 정보 변경

기존 부서에서 독립하여 새로운 부서가 신설된다.깔끔하게 신설 부서 인원들의 리스트를 나한테 전달해줬으면 좋았겠지만 그런 일은 일어나지 않지.신설 부서의 부서장을 알려주며 기존에 그 부서장 리포팅 라인에 있는 모든 인원들이 그 부서로 편성된다고. 즉, 해당 부서장을 직속 상사로 두는 사람들, 그리고 그 사람들을 직속상사로 두는 사람들, 또한 그들을 직속상사로 두는 사람들... 과 같이 타고 들어가야한다.  이런 경우 일종의 BFS 알고리즘을 사용하면 간단하다. # 조회가 필요한 유저들이 들어가 있는 OU 경로들을 리스트로 묶음$searchBases = @( "OU=", "OU=", "OU=", etc...)# 조회가 필요한 유저들을 담아줄 리스트를 선언$users = @()# OU경로들에 ..

At actual field 2025.03.14

Powershell을 통해 메일 전송

파워쉘로 메일 전송이 가능하다면 몇가지 업무를 자동화할 수 있을 것 같아 한두달 전부터 시도해봤는데 실패했었다. 드디어 전송에 성공하여 올리는 포스트. 먼저 Office 365 모듈을 설치해준다. 이 스크립트는 처음 한번만 런하면 된다. Install -Module -Name ExchangeOnlineManagement -Force -AllowClobber 내 M365 계정을 통해 메일을 전송해야하기에 인증 정보를 받아와야한다.  계속 실패했던 것이 이 부분이었는데, M365 계정 관리 페이지에서 보안 - 앱 암호 설정을 통해 앱 암호를 설정해주면 된다. My Sign-Ins | Security Info | Microsoft.com My Sign-Ins mysignins.microsoft.com 위의 웹..

At actual field 2024.06.09

Powershell을 통한 M365 그룹 생성 및 수정

파워쉘로는 대체 안되는게 뭘까. OS뿐만 아니라 다른 다양한 마이크로소프트 제품들도 핸들링이 가능한 것 같다. 회사 조직구조가 크게 개편되면서 Exchange Admin Center에서 Distribution List들을 잔뜩 수정해야할 일이 있었는데 단순 클릭과 타이핑의 연속이다보니 지루하기 짝이 없었다. 어쨌든 수정을 메뉴얼로 마치긴했는데 파워쉘로도 M365 그룹을 생성하거나 수정하는 등의 작업이 가능하다는걸 뒤늦게 알아냈다. 미리 좀 알아볼걸 아래는 각각 DL 생성과 DL, Shared Mailbox에 대한 수정 스크립트다.#Install-Module -Name ExchangeOnlineManagement -Force -AllowClobberConnect-ExchangeOnline -UserPrin..

At actual field 2024.05.18

Powershell로 Active Directory 퇴사자 계정 처리하기

신규입사자 계정 객체 생성 스크립트는 여러모로 보안이 신경쓰여 블로그에 포스팅을 못하고 있지만 퇴사자 처리는 괜찮을 것 같다.  역시나 민감한 부분은 Classified 처리. 퇴사자 계정처리는 계정생성보다 훨씬 간단하다. 부서별, 직무별 달라지는 property들이나 네이밍 규칙 등으로부터 자유롭기 때문.$allUsers = Get-ADUser -Filter * -Properties samAccountName, Manager$anotherLeaverFlag = $truewhile($anotherLeaverFlag){     $accName = Read-Host "퇴사자의 사번을 입력하세요"    $leaveUser = Get-ADUser -Filter {SamAccountName -eq $accName..

At actual field 2024.05.18

Powershell로 실행 로그 저장하기

그동안 파워쉘로 Active Directory 상 User Object를 생성하는 스크립트를 계속 업데이트 해오다보니 단 한줄이었던 스크립트가 어느덧 300줄 정도로 늘어났다.  스크립트가 길어지다보니 기능별로 모듈화된 함수를가진 별도의 파일들로 나눌까도 생각해봤지만 어차피 수정하는 사람은 나뿐이고 실행하는 사람도 나포함 둘뿐이라 굳이 그런 큰 작업을 할 것 같지는 않다.  블로그에 포스팅하고 싶은 기능들도 있었지만 혹여 회사 서버 아키텍트나 하다못해 네이밍 규칙이라도 어떤 실마리라도 보일까 싶어 포스팅하지 않고 있었는데 이번 기능은 별 상관 없을 것 같다. OU 경로와 공유폴더 경로는 classified 처리했다.아래의 스크립트는 AD 계정을 생성하고나서 생성된 계정들의 정보와 추가작성한 메모를 담은 ..

At actual field 2024.05.18

Powershell로 로컬 프로필 삭제하기

우리회사에는 공용PC들을 쓰는 부서가 있다. 공용PC다보니 부서원들이 그날그날 출근해서 매번 다른 PC를 사용하고, 그렇게 하다보니 PC마다 로컬 유저 프로필들이 잔뜩 생성되어 하드 용량을 꽉 채워버리기 부지기수. 하드 증설 예정이나 그 전까지는 용량이 다찼다고하면 IT인원이 하나씩 지우는 수밖에 없다. 위의 캡처와 같이 관리자 계정으로 로그인하여 system advanced properties에서 프로필을 하나씩 삭제해도 되지만 시간이 오래걸리고 번거로우니 파워쉘을 이용한 자동삭제 스크립트를 작성했다. try{    Set-ExecutionPolicy remotesigned}catch{    }$profiles = Get-WmiObject Win32_UserProfile | Where-Object { ..

At actual field 2024.05.02

Powershell을 통한 Active Directory의 객체 정보 수정

Active Directory의 유저 계정 CRUD 업무를 인계 받았다. 신규입사자들을 위한 계정을 한방에 생성하기 위한 파워쉘 명령어와 전체 계정의 유저 네임을 텍스트로 export하는 명령어도 전달 받았는데, 파워쉘 명령어는 낯설긴 하지만 두가지를 보니 약간은 SQL과 자바스크립트와 유사하다는 인상을 받았다. 여기에 자세하게는 작성할 수 없지만, 마침 특정 유형의 사용자들이 매번 로그인하기에 암호가 너무 번거롭다며 그들 계정의 암호를 간단하게 일괄변경해줄 수 없냐는 문의를 받았고.. 당연히 내가 내 맘대로 그렇게합죠 할 수는 없는 법. 보안상 리스크가 크기에 승인될리는 없을 듯 하지만 이 기회에 AD상 다수의 객체에 대한 property를 일괄 수정하는 테스트를 돌려보았다. $ouPath = "OU=..

At actual field 2024.01.11