Enterprise IT Solutions/Microsoft 21

2012 R2 및 이전 버전의 Windows Server에서 Disk Cleanup 사용하기

2012 R2 버전과 그 이전 버전의 윈도우 서버에서는 Desktop Experience 피쳐를 설치하지 않은 경우 Disk Cleanup (cleanmgr.exe) 유틸리티도 설치가 되지 않습니다. 이유는 알수가 없지만 필요할 때 아래와 같이 파일을 복사하여 사용하면 된다고 합니다. Copy-Item %systemroot%\WinSxS\amd64_microsoft-windows-cleanmgr*\cleanmgr.exe %systemroot%\System32\ Copy-Item %systemroot%\WinSxS\amd64_microsoft-windows-cleanmgr.resources*en-us*\cleanmgr.exe.mui %systemroot%\System32\en-US\ 참고 https://d..

Windows Time 서비스의 시간 동기화 방식과 설정 방법

개요 얼마 전에 시간 동기화 문제때문에 중요한 서비스가 안 되어 트러블슈팅을 진행했었습니다. 그래서 이와 관련해서 Windows Time 서비스와 그 설정 도구인 w32tm 사용 방법에 대해 글을 적어보려 합니다. NTP, SNTP, NT5DS, 하이퍼바이저 SNTP(Simple Network Time Protocol)는 RFC2030(v3)과 4330(v4)에 기술되어 있는 시간 동기화 프로토콜입니다. Windows 2003/XP와 그 이전 버전에서 사용했었다고 합니다. SNTP는 NTP를 단순화한 버전이라고 알고 있습니다. 여러 타임 소스를 지정하고, 우선순위가 높은 소스로부터 주기적으로 시간을 받아옵니다. NTP는 SNTP보다 더 정밀한 시간 동기화 프로토콜입니다. 최근 Windows 서버/클라이언..

[PowerShell] GUI 애플리케이션 만들기

이번에 올릴 스크립트는 제가 실무에서 활용했던 마법사 형태의 GUI 툴입니다. 개인적으로 당연히 터미널 속에서 작업을 끝낼 수 있는 스크립트를 선호하지만 어떤 이유로 Windows Forms를 이용해서 GUI 형태로 만들었습니다. 스크립트 내용은 제외하고 껍데기만 가져와서 정리해 보았습니다. 스크린샷 필요한 컴포넌트 임포트 Add-Type -AssemblyName system.Windows.Forms [System.Windows.Forms.Application]::EnableVisualStyles() 스테이지별 작업 정의 $Global:step=0 $Global:hosts='localhost','127.0.0.1' function Run-Check { if($Global:step -eq 1) { $pre..

DNS Round Robin, Netmask Ordering, Subnet Priortization

얼마 전에 일부 윈도우 도메인 클라이언트에서 도메인 네트워크에 접근하는 데 상당한 지연(한 10초 정도)이 생기는 이슈가 있어 조사해 보았더니, DNS 서버(Server 2012)가 도메인 컨트롤러의 A 레코드를 임의로 응답해서 클라이언트가 접근할 수 없는 레코드를 응답하는 문제였습니다. DNS Netmask Ordering 기능은 DNS 서버에 동일한 A 레코드가 여러 개 존재할 때, DNS 클라이언트가 위치한 서브넷과 유사한 순서로 배치하여 응답하는 기능입니다. 예를 들어서 클라이언트가 10.0.0.100이라면 아래 순서로 응답해 줍니다. www.test.local 10.0.0.1 www.test.local 10.0.1.1 www.test.local 10.0.2.1 DNS Round Robin 기능은..

써드파티 유틸리티 없이 패킷 캡처하기 (netsh)

개요 Windows에 내장된 netsh.exe를 활용하여 ICMP Echo Request를 발생시킨 프로세스를 찾는 과정을 정리했습니다. 1. 프로세스 추적을 위해 감사 GPO 적용 컴퓨터 구성\Windows 설정\보안 설정\로컬 정책\감사 정책\프로세스 추적 감사 2. 관리자 권한으로 netsh trace 시작 PS C:\Windows\system32> netsh trace start provider=Microsoft-Windows-NDIS-PacketCapture capture=yes Protocol=1 IPv4.DestinationAddress=(8.8.8.8,8.8.4.4) tracefile=D:\trace.etl correlation=disable report=no 추적 구성: ---------..

[PowerShell] Inactive User Removal Tool 스크립트

유용한 스크립트 올려둡니다. #Name: Inactive User Removal Tool #Version: 2020-Nov-25-1 #Author: iseopkim@gmail.com #Description: #마지막으로 로그인한 날짜가 daysInactive보다 이전인 사용자 계정을 disable 상태로 만듭니다. #비활성화한 사용자 목록 리포트가 reportDirectory 폴더 안에 저장됩니다. #배열 변수 searchBase에 OU를 따옴표와 콤마로 구분하여 지정합니다. ######################### Configuration Items ######################### $daysInactive=30 $reportDirectory="D:\" $searchBase=@("OU..

EFI 펌웨어 업데이트 이후 PCI Express 카드 인식 문제

작년에 화면 출력용 델 서버 EFI 펌웨어를 업그레이드 한 이후 Nvidia 그래픽 카드가 인식이 안 되는 문제 (+기존 NIC이 새로운 NIC으로 인식되는 문제)가 생겨서 해결 방법을 적어두었습니다. 윈도우 PCI Express Native Control 기능을 비활성화해서 해결했습니다. bcdedit /set {current} pciexpress forcedisable shutdown /s /t 0

Non-Microsoft DHCP Relay 환경에서 DHCP request timeout 문제해결

개요 작년에 겪었던 문제인데, VMware Horizon을 활용한 VDI 시스템을 운영하는 곳에서 Master VM Image를 Compose하는 과정에서 반복적으로 일부 클론들에 Agent Communication Failure가 발생하는 문제가 있었습니다. 그래서 Fail된 클론에 들어가서 이벤트 로그를 확인해 보았더니, 공통적으로 아래 로그가 있었습니다. Netlogon - 5719 Group Policy - 1129 DHCP-Client Operational - 50024 구글링 해보니, KB2459530가 나왔습니다. (지금 다시 검색해보니 해당 KB가 검색결과에 노출되지 않는 것 같습니다.) 원인은 윈도우 7 클라이언트가 부팅될 때, Broadcast 플래그를 0으로 세팅한 DHCP-Disco..

[PowerShell] 파워셸로 마우스, 키보드 입력 매크로 만들기

마우스와 키보드 입력을 간단한 매크로처럼 활용할 수 있게 해 보았습니다. 쏠쏠하게 잘 활용하고 있습니다^^ mouse_event() Add-Type -Name mouse -Namespace u32 -MemberDefinition '[DllImport("user32.dll")] public static extern void mouse_event(int flag, int x, int y, int a, int b);' $move = 0x0001 $ldn = 0x0002 $lup = 0x0004 $rdn = 0x0008 $rup = 0x0010 $abs = 0x8000 $left_click = $ldn -bor $lup -bor $move -bor $abs $right_click = $rdn -bor $rup ..

[PowerShell] 워드 파일을 PDF로 일괄 변환하는 스크립트

고등학생 시절 학습자료를 워드 파일(혹은 RTF)로 정리하다 간혹 다른 사람에게 주기 위해 PDF로 바꿀 필요가 있었습니다. 그 때 요긴하게 사용했던 스크립트입니다. 코드에는 *.docx로 되어 있는데, 워드로 열 수 있는 확장자면 필요에 따라 바꾸시면 됩니다. 실행할 때는 변환하려는 워드 파일들이 있는 디렉터리에서 하면 됩니다. function Export-WordToPDF { param( [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)] [Alias("FullName")] $path, $pdfpath = $null) process { if (!$pdfpath) { $pdfpath = [System.IO.Path]::ChangeEx..