winsxs 폴더 정리 방법

 

[대상 시스템]

-       Windows Server 2008 R2 SP1

 

[확인사항]

-    Winsxs에는 운영체제의 모든 Component가 존재하기 때문에 폴더 내부의 파일 삭제나 이동이 불가능하며, 해당 폴더의 cache를 지우는 거나 Service pack을 적용한 이후 service pack file을 제거하는 방법으로 해당 폴더의 크기를 줄이는 방법이 가능합니다.

전달해 드리는 가이드는 Windows Server 2008이상의 모든 OS에서 적용이 가능하며, cache를 지우는 가이드입니다.

 

[Action Plan]

-       Cache를 지우는 방법

-       cmd (관리자 권한으로 실행)을 열어 c:\windows\winsxs폴더로 이동하여 하기의 명령어를 입력합니다.

Cmd à dir *.* /a /s >winsxs.txt

만약 아래와 같이 명령어가 실행이 되지 않는다면, 로그인 계정으로 Winsxs폴더 소유자 및 권한을 변경하셔야 합니다.

로그인 계정으로 소유자 및 권한을 변경후, 작업이 끝나면 trustedinstaller로 원복을 하셔야 합니다.

 

-       Windows module installer service를 중지합니다.

Cmd Net stop trustedinstaller

 

-       cache 폴더를 지우기 위해 아래의 명령어를 입력합니다.

Cmd à Del /q %windir%\winsxs\ManifestCache\*

 

 

-       만일 폴더를 지우는 것이나, dir *.* /a /s >winsxs.txt가 불가능하면 해당 폴더의 소유자를 로그인한 account가 있는 group으로 변경해야 되며 변경방법은 다음과 같습니다.

-       로그인 계정으로 Winsxs폴더 소유자 및 권한 변경

1.     Winsxs 폴더를 우클릭하여 속성에서 보안 tab의 고급을 클릭합니다.

2.     소유자 tab에서 편집을 클릭하여 현재 로그인 계정 또는 로컬의 Admin 계정 (로그인 계정이 로컬의 admin 계정일 경우)을 선택한 후 하위 컨테이너와 개체의 소유자 바꾸기를 선택한 후 적용 확인을 누릅니다.

3.     Winsxs 고급 보안 설정창을 확인을 눌러 종료합니다.

4.     Winsxs 우클릭 속성의 보안 tab에서 편집을 누릅니다.

5.     Winsxs의 사용 권한 창에서 소유자를 변경한 계정에게 모든 권한을 허용한 후, 확인을 누릅니다.

6.     Winsxs 속성 창을 종료합니다.

 

-       Winsxs의 폴더 권한을 trustedinstaller로 원복

1.     Winsxs폴더를 우클릭하여 속성에서 보안 tab의 고급을 클릭합니다.

2.     소유자 tab에서 편집 à 기타 사용자 및 그룹을 클릭합니다.

3.     사용자, 컴퓨터, 서비스 계정 또는 그룹 선택 창에서 NT Service\trustedinstaller를 입력한 후 이름 확인을 클릭하여 TrustedInstaller를 추가하여 확인을 누릅니다.

4.     하위 컨테이너와 개체의 소유자 바꾸기를 선택한 후 적용 확인을 누릅니다.

5.     Winsxs 고급 보안 설정 창을 확인을 눌러 종료합니다.

6.     Winsxs 우클릭 속성의 보안 tab에서 편집을 누릅니다.

7.     Winsxs의 사용 권한 창에서 소유자를 변경한 TrustedInstaller에게 모든 권한을 허용한 후 확인을 누릅니다.

8.     Winsxs 속성 창을 종료합니다.

 

 

클러스터 로그 확인

 

Get-ClusterLog -UseLocalTime -Destination .

(Get_Cluster).ClusterLogLevel

 

 

리소스 정보

PS> Get-ClusterResource

PS> Get-ClusterResource "SQL Server" | Get-ClusterParameter

 

 

SQL Server 리소스의 HealthCheckTimeout, FailureConditionLevel 값을 확인할 수 있으며 아래와 같이 쿼리를 통해서도 이러한 속성값을 변경할 수 있습니다.

 

 

ALTER SERVER CONFIGURATION SET FAILOVER CLUSTER PROPERTY HealthCheckTimeout = 60000;

ALTER SERVER CONFIGURATION SET FAILOVER CLUSTER PROPERTY FailureConditionLevel = 3; 

 

 

 

 

 

이벤트 로그

Get-EventLog [-AsString] [-ComputerName <string[]>] [-List] [<CommonParameters>]

 

Get-EventLog [-LogName] <string> [[-InstanceId] <Int64[]>] [-After <DateTime>] [-AsBaseObject] [-Before <DateTime>] [-ComputerName <string[]>] [-EntryType <string[]>] [-Index <Int32[]>] [-Message <string>] [-Newest <int>] [-Source <string[]>] [-UserName <string[]>] [<CommonParameters>]

 

PS> Get-EventLog -list

 

최근 3개의 시스템 로그 확인하고 Message 내용을 좀 더 자세히 보기 위해 Format-List cmdlet 을 사용합니다.

PS> Get-EventLog System -newest 3

 PS> Get-EventLog System -newst 1 | Format-list

 

 

시스템 이벤트 로그 중 Source 값이 EventLog 인 것에 대한 필터링

PS> Get-EventLog System | Where-Object {$_.Source -eq "EventLog"}

 

 

이벤트 로그 Source(EventLog) 와 EventID(6005) 에 대한 OR 필터링

PS> Get-EventLog System -Source EventLog | Where-Object {$_.EventID -eq "6005"}

 

Index 번호를 사용하여 해당 이벤트 상세 확인

PS> $a = Get-EventLog System -Index 406

 PS> $a | Format-List -property *

 

 

이벤트 로그 메시지에 포함된 문자열을 검색하여 해당 정보를 text 파일로 기록합니다.

PS> Get-EventLog System -message "*uptime*"

 PS> Get-EventLog System -index 467 | Format-List > uptime.txt

 

이벤트 로그 발생 빈도 카운트

PS> $events = Get-EventLog System

 PS> $events | Group-Object -property source -noelement | Sort-Object -property count -descending 

도메인 서버에서 계정 SID를 찾는 방법입니다.


[환경]

Windows2012 R2 Active Directory 


- SID를 사용자명으로 검색

(&(objectclass=user)(|(objectSid=S-1-5-21-3696724827-4127486532-3577469546-1612)))  



- 사용자 명을 SID로 검색

dsquery user dc=testvm,dc=com -name * |dsget user -dn -samid -sid


+ Recent posts