실제 마우스 딸깍이로 해결할수있는 GPO 도 있는 반면 파일들을 배포해야하거나 해당 정책이 없는 경우 Script로 작성하여 배포를 진행하여야 한다.
스크립트를 작성할 확장자는 파워쉘(.ps1), 배치(.bat) 스크립트이다.
조건
1. 파일이 설치 되어있는 경우엔 설치를 진행하지 않을것 2. 즉, 설치가 안되어있는 컴퓨터에다가만 설치를 진행해야 함 3. scripts 실행시 cmd 창이 나오지 않을 것 > Background 진행
전 담당자가 해놓은 스크립트가 있겠지 라는 안일한 생각과
ad 서버에 스크립트만 작성하면 되겠지 라는 마음으로 별거 없네 라고 생각했다.
전임자가 해놓은 방식을 유지한 채로 스크립트를 작성하여 배포 진행
스크립트가 돌지를 않는다. 조졌다.
리부팅 진행
역시 돌지 않는다. 조졌다.
다른 망의 AD서버에서 같은 방식으로 테스트를 진행해보니 스크립트가 역시 돌지 않는다.
유후~
그래서 구글링을 준내 한 뒤 스크립트를 다시 작성 후 배포 진행
스크립트가 돌았다.
설치 진행
혹시 몰라 리부팅
설치가 되어있는데 또 설치가 된다. 조졌다.
문제
망 A와 망 B에서 스크립트가 둘 다 돌지 않았다 -> 스크립트 문제 다른 망에서 스크립트가 돌았는데 설치가 되어있어도 또 설치가 된다 -> 스크립트 문제 망 A에서는 스크립트가 돌지 않는데 망 B에서는 스크립트가 돈다 -> AD서버에서 해당 배치 파일과 설치해야할 파일이 있는 폴더의 권한 문제 즉, 스크립트도 문제고 전부 문제라는 거지
확인 시 필요한 망에서 파일서버가 따로 있었고 AD에서 정책을 적용 시 일반 사용자가 권한이 없어 스크립트를 실행하지 못하였고 AD의 도메인에 가입된 사용자들이 접근할 수 있는 폴더를 찾아 해당 폴더에 스크립트를 넣고 정책 적용한 뒤
테스트는 정상적으로 이뤄졌다.
즉, 배포 시 폴더의 권한을 확인하여 작업을 진행해야 한다.
아래 스크립트는 실패한 내역과 성공한 스크립트를 써봤다.
선행 작업 : 배포해야하는 파일의 경로 인지, 파일 권한 확인
메모장으로 작업(실패 bat. ps1) 1. Start-Process -FilePath "설치 유무 확인할 파일" // ps1 >>실패 (스크립트 돌지 않음) 설치할 파일 경로\파일이름.exe /S // bat >> 실패(스크립트 계속 동작) 2. if(!(Test-Path -Path "생성할 파일")) { // 생성할 파일이 생성이 되면 해당 파일로 설치 유무 확인 후 설치 작업 진행을 위해 $proc = Start-Process "설치할 파일 경로" -PassThru $hanle = $proc.Handle $proc.WaitFotExit(); New-item -Path "설치 유무 확인할 파일" // ps1 >> 실패(스크립트 돌지 않음) } 3. @Echo Off // Echo Off를 하였을 경우 아래의 명령어에 대한 결과값만 나오기 때문에 설치 팝업만 뜬다. IF EXIST "파일 존재 유무 파일 경로" // 해당 파일 경로에 특정 파일이 있는지 확인 ELSE ( "설치할 파일 경로" /S ) // bat >> 성공