2007년 10월 30일 화요일

srv / ID: 2000

윈도우2000서버 서비스팩4 이고.. 업데이트는 최신것까지 다 했습니다.

원본 srv , id 2000 이고

예상치 않게 서버의 시스템 호출이 중단되었습니다.


데이터 - 워드형식으로 나온것입니다.
0000: 00040000 00540001 00000000 c00007d0
0010: 00000000 80090302 00000000 00000000
0020: 00000000 00000000 138b032c

시스템로그에서 이 오류메세지만 출력되는데.. 이유를 알 수가 없어요..

2007년 10월 19일 금요일

Windows Server Update Services / ID: 7053

WSUS 관리 콘솔에서 예기치 않은 오류가 발생했습니다. 이 오류는 일시적일 수 있습니다. 관리 콘솔을 다시 시작해 보십시오. 오류가 계속되면

%appdata%\Microsoft\MMC\에 있는 WSUS 파일을 삭제하여 콘솔에 남아 있는 기본 설정을 제거해 보십시오.
System.InvalidOperationException -- ShowContextMenu에서 선택한 항목이 필요합니다. Source Microsoft.ManagementConsole Stack Trace: 위치: Microsoft.ManagementConsole.FormView.ShowContextMenu(Point point, Boolean onResultItem)
위치: Microsoft.UpdateServices.UI.SnapIn.Pages.BaseListPage.ContextMenuActivate(DataGridViewRow row, Boolean keyboardActivation)
위치: Microsoft.UpdateServices.UI.SnapIn.Pages.BaseListPage.list_CellMouseClick(Object sender, DataGridViewCellMouseEventArgs e)

SQL Server 2005 업그레이드 가이드



소책자 형태로 배포되는 Microsoft 의 가이드중에 하나인 "SQL Server 2005 업그레이드 가이드" 입니다. 아마 관련 세미나를 참석하면 종종 무료로 나눠 주기도 한것입니다.

다운로드:

http://download.microsoft.com/download/6/8/f/68f15f44-e957-4a1a-97b8-
b7444e4d0379/SQLServer2005PocketBookSeries_Upgrade_Guide.pdf



목차

업그레이드 계획세우기
업그레이드와 마이그레이션 개념 정의
업그레이드 및 마이그레이션 대상
마이그레이션 장점과 단점
업그레이드 장점과 단점
업그레이드 계획 수립

업그레이드 사전 점검사항
서버 환경 점검
SQL Server 2005 에디션
SQL Server 2005 하드웨어 요구사항 점검(32비트 시스템 기준)
확장성 및 성능
SQL Server 2005의 운영체제 요구사항(32비트기준)
이전 버전에서의 응용프로그램 호환성 점검

업그레이드 점검도구 설치와 수행
업그레이드 어드바이저(Upgrade Advisor) 도구
업그레이드 어드바이저 설치방법
업그레이드 어드바이저 실행전 준비사항
업그레이드 어드바이저 설치

업그레이드 점검 도구 결과 분석
90호환성 모드 지원 분석 결과
문서화되지 않은 시스템 테이블 참조
기타 데이터베이스 엔진 문제

업그레이드 점검 도구 결과에서 나타난 문제의 해결

SQL Server 2005 설치

SQL Server 2005 설치 개요
시스템 구성 검사(System Consistency Checker (SCC))
SQL Server 2005 구성요소 설치 마법사
설치후 파일 위치(file locations)
셋업 로그파일 검사하기
레지스트리에서 인스턴스 이름 찾아보기
SQL Server 서비스 확인
SQL Server 2005 마이그레이션시 인스턴스명
SQL Server 2000에서 SQL Server 2005로 업그레이드시 인스턴스
마이그레이션시 SQL Server 2000로부터 사용자 데이터베이스 가져오기
무인 설치 수행하기
원격 서버 설치 수행하기
클러스터에 SQL 서버 설치하기
SQL Server 2005 구성요소 추가 또는 삭제
SQL Server 2005 삭제

SQL Server 2005의 새로운 기능
SQL Server 2005 개요
SQL Server 2005 구성요소(components)
데이터베이스 관리자를 위한 새로운 기능
데이터베이스 개발자를 위한 새로운 기능
새로운 관리도구 - SQL Server Management Studio

새로운 기능을 사용할 수 있는 쿼리 찾아 변경하기
TOP(@n)구문
CTE(Common Table Expression) 테이블
RANK()함수
ROW_NUMBER()함수
PIVOT연산자
TRY..CATCH 구문
SQL Server management에서의 성능 자료 수집
프로필러를 이용한 성능 자료 수집


18-SQL_Server_2005.png

2007년 10월 16일 화요일

Windows Update Agent / ID: 20

Installation Failure: Windows failed to install the following update with error 0x80070643: Security Update for Microsoft .NET Framework, Version 2.0 (KB928365).

자세한 정보는 http://go.microsoft.com/fwlink/events.asp에 있는 도움말 및 지원 센터를 참조하십시오.
데이터:
0000: 57 69 6e 33 32 48 52 65 Win32HRe
0008: 73 75 6c 74 3d 30 78 38 sult=0x8
0010: 30 30 37 30 36 34 33 20 0070643
0018: 55 70 64 61 74 65 49 44 UpdateID
0020: 3d 7b 32 38 31 39 30 41 ={28190A
0028: 36 43 2d 42 44 45 34 2d 6C-BDE4-
0030: 34 42 39 31 2d 38 33 42 4B91-83B
0038: 43 2d 31 46 30 32 33 31 C-1F0231
0040: 42 36 39 34 42 32 7d 20 B694B2}
0048: 52 65 76 69 73 69 6f 6e Revision
0050: 4e 75 6d 62 65 72 3d 31 Number=1
0058: 30 32 20 00 02 .

2007년 10월 13일 토요일

Microsoft iSCSI Software Initiator Version 2.05

Windows 에서, iSCSI 를 이용할수 있도록 해주는 프로그램 및 드라이버 입니다.

iSCSI 는 NAS, SAN 과 더불어 차세대 스토리지 기술로 각광받을것 같은데요,. 얼마전에는 공식적은 기술로 승인을 받은 상태라서 스토리지 업계의 기술적용을 한층더 가속화 될것 같습니다.

Microsoft iSCSI Software Initiator Version 2.05

http://www.microsoft.com/downloads/details.aspx?FamilyID=12cb3c1a-15d6-4585-b385-befd1319f825&DisplayLang=en


iSCSI 기술에 대한 것은, 이 기술이 스토리지 뿐만 아니라 IP 기반이므로 네트워크 업계에서도 관련이 있어서 자료는 상당히 많이 있습니다.

Microsoft Storage Technologies - iSCSI
http://www.microsoft.com/WindowsServer2003/technologies/storage/iscsi/default.mspx

iSCSI 프로토콜 개념 및 구현
http://www.cisco.com/web/KR/products/pc/snp/5400/iscs_wp.html

SQL Server 2005 Driver for PHP CTP 버젼

Microsoft 에서 PHP 를 위해 내놓은 SQL Server 2005 드라이버 입니다. 

SQL Server 2005 연동시 기존의 PHP 확장모듈 보다 훨씬 뛰어나고 SQL Server 2005 의 기능을 보다더 쉽게 이용할수도 있도록 해주는 드라이버 입니다.


SQL Server 2005 Driver for PHP Community Technology Preview

http://www.microsoft.com/downloads/details.aspx?FamilyId=85F99A70-5DF5-
4558-991F-8AEE8506833C&displaylang=en



이 드라이버를 이용할려면, 기존의 Windows 에서의 PHP 환경이 먼저 세팅이 되어 있어야 하는데요,. PHP 5.x 이상이어야 하고 SQL Server Native Client 가 설치되어 있어야 합니다.

드라이버의 자세한 세팅 방법은, 설치후 Php_sqlsrv_readme.txt  문서에 잘 설명되어 있으므로 문서를 참고해서 추가적인 설치나 이용방법을 참고하면 될것 같습니다.

참고로, 현재는 CTP 상태이므로 맛보기만 하면 될것 같고 추후 정식버젼이 나오면, FastCGI 와 함께 Windows 에서의 PHP-SQL Server 연동이 이전보다는 훨씬더 빠르고 안정적인 웹사이트 환경이 될것으로 기대합니다.

LAMP 를 대체하기 위한 Microsoft 의 젠드와의 제휴 성과 발표

Microsoft 에서 젠드와의 제휴를 통한 Windows Server 에서의 PHP 지원 및 성능강화에 관련된 기사 및 실제 FastCGI 같은 그 결과물을 보여주고 있는데요,.

이번 제휴성과물에는 '패스트CGI(FastCGI)' 외, SQL Server 와의 연동에 기존의 PHP 확장 모듈보다 더 성능이 뛰어난 드라이버를 제공한다는 사실입니다.
 

Microsoft 는 이를, 현재의  'LAMP 스택(리눅스, 아파치, MySQL, PHP)' 를 WISP(윈도우, IIS, SQL 서버, PHP) 으로 대체하기를 희망하고 있다고 하네요..^^

개인적인 시각으로는 실제 필드에서 사용가능한 품질의 제품이 나와준다면 그 시간은 그리 길게 걸리지는 않을것 같습니다..

현재도,, Windows Server 에서 PHP 를 운영하기 위해서는 IIS 설정을 통해서 가능하나, 다수의 개발자들이 Apache 를 설치하고 있기 때문이고,. PHP 웹사이트중 Windows 환경에서 운영되는 그 비율이 조금이나마 증가하고 있기도 하죠..^^

Microsoft 담당자의 말대로 매우 흥미롭게 전개될 것 같습니다. 이미 IIS,ASP.NET 이 있는 마당에 Microsoft 제품과 직접적인 경쟁을 하게 되니 말이죠..

그렇다 하더라고,. 역시 Windows 플랫폼내에서의 경쟁 아니겠습니까?.. ^^ 
어느 기사에 이런문구가,.

'Microsoft 는 이미 적들의 공격으로부터 살아 남는 방법을 매우 잘 알고 있다.'


MS, PHP와의 친화성 강화한 젠드와의 제휴 성과 발표
http://www.zdnet.co.kr/news/enterprise/dev/0,39031103,39162223,00.htm

성과 중 첫 번째는 패스트CGI(FastCGI)의 릴리스이다. 이 소프트웨어는 MS의 웹페이지 호스팅용 소프트웨어인 '인터넷 인포메이션 서버(IIS)'에서의 PHP의 동작 속도를 향상시킨다. 스테이플스에 의하면 패스트CGI는 경우에 따라서는 무료 배포될 수도 있다.

MS는 데이터베이스 'SQL 서버 2005'로 PHP의 실행을 가능하게 하는 소프트웨어 연결 드라이버의 프리뷰판을 릴리스한다. 스테이플스는 "이것은 PHP 애플리케이션에서 SQL 서버 데이터에 액세스하기 위해 MS가 개발해 지원하는 PHP 드라이버다"라고 설명했다.

뒤의 인터뷰에서 스테이플스는 이 SQL 서버 드라이버의 완성 시기에 대해 유저의 피드백 내용 등에 따라 바뀌지만, 2008년 전반이 될 것이라고 말했다.

또 MS는 윈도우 서버 2008의 필요 최저한의 부분만을 남긴 버전인 '서버 코어'로 PHP를 지원한다. 이 서버 코어는 필요한 기능만을 인스톨하는 것으로 관리의 간이화와 복수의 프로그램 인스톨에 수반하는 보안 취약성의 경감을 목적으로 하고 있다.

그리고 마지막으로 MS는 유저 ID나 패스워드가 증가하는 웹 사이트의 유저에게 생기는 귀찮은 문제를 경감하기 위한 대처의 일환으로서 '인포메이션 카드(Information Card)'라고 불리는 젠드 프레임워크의 ID관리 기술을 지원한다.

2007년 10월 12일 금요일

COM+ / ID: 1001

평균 호출 시간이 10분을 초과했습니다. 이 동작이 예기치 않은 동작일 경우 Microsoft 기술 자료(http://support.microsoft.com)의 910904 문서에서 COM+ AutoDump 기능을 사용하여 덤프 파일을 자동으로 생성하거나 문제가 다시 발생하는 경우 프로세스를 종료하는 방법에 대한 자세한 내용을 참조하십시오.
서버 응용 프로그램 ID: {F433B29E-6613-4041-96DA-51FAE7D2C4EE}
서버 응용 프로그램 인스턴스 ID:
{EB16E87B-AC13-470E-9FCD-FFCABCCE2104}
서버 응용 프로그램 이름: Fasoo_Lis

2007년 10월 11일 목요일

RPC의 취약점으로 인한 서비스 거부 문제점 - 2007년 10월

2007년 10월에 발표된 취약점중, 서버측에 위험요소가 있는 취약점은 "RPC의 취약점으로 인한 서비스 거부 문제점 (933729)" 정도로 보여집니다.

그외 나머지 패치는, 사용자의 인터넷 및 소프트웨어 사용상의 취약점이므로 서버와 크게 연관되지는 않습니다.


RPC의 취약점으로 인한 서비스 거부 문제점 (933729)

RPC(원격 프로시저 호출) 기능에서 RPC 요청의 인증을 수행할 때 NTLM 보안 공급자와 통신에 실패하기 때문에 서비스 거부 취약점이 존재합니다. 익명 공격자가 특수하게 조작된 RPC 요청을 네트워크를 통해 컴퓨터에 전송하여 취약점을 악용할 수 있습니다. 취약점 악용에 성공한 공격자는 컴퓨터에서 응답을 중지하거나 다시 시작하도록 만들 수 있습니다.


임시 대응방법은 역시, 필요치 않는 포트차단이나 특정 호스트에만 접속을 허용하도록 강력한 방화벽 정책이 대안입니다.

방화벽에서 다음 항목을 차단합니다.
- UDP 포트 135번, 137번, 138번, 445번 및 TCP 포트 135번, 139번, 445번, 593번
- 1024 이후의 포트에서 원치 않는 모든 인바운드 트래픽
- 기타 특별 구성된 RPC 포트

이들 포트는 RPC와 연결을 시작하는 데 사용됩니다. 방화벽에서 이러한 포트를 차단하면 이 취약점을 악용한 방화벽 뒤의 시스템 공격을 막을 수 있습니다. 또한 원격 시스템에서 특수하게 구성된 다른 모든 RPC 포트도 차단해야 합니다. 다른 포트를 사용하는 공격을 방지하려면 인바운드 원치 않는 인터넷 통신을 모두 차단하는 것이 좋습니다.

대안의 영향: 여러 Windows 서비스가 영향을 받는 포트를 사용합니다. 이러한 포트에 대한 연결을 차단하면 여러 응용 프로그램 또는 서비스가 작동하지 않습니다. 다음 목록은 영향을 받는 일부 응용 프로그램 또는 서비스입니다.

SMB(CIFS)를 사용하는 응용 프로그램
메일 슬롯 또는 명명된 파이프를 사용하는 응용 프로그램(RPC over SMB)
서버(파일 및 인쇄 공유)
그룹 정책
Net Logon
분산 파일 시스템(DFS)
터미널 서버 라이선스
인쇄 스풀러
컴퓨터 브라우저
원격 프로시저 호출 로케이터
팩스 서비스
인덱싱 서비스
성능 로그 및 경고
Systems Management Server
라이선스 로깅 서비스


고급 TCP/IP 필터링
http://support.microsoft.com/kb/309798

IPSec(인터넷 프로토콜 보안)
http://support.microsoft.com/kb/313190
http://support.microsoft.com/kb/813878

2007년 10월 10일 수요일

강력한, 무료 웹방화벽 WebKnight 2.1

지난해 말 배포된 WebKnight 2.0 은 그야 말로 기존 1.x 대에 비해서 비약적인  기능 업데이트가 되었는데요,. 한가지 치명적인 버그가 있었습니다. 한글처리에 문제가 있었던 것인데요,.

2007.10.08 일자로 해당 버그가 개선된 WebKnight 2.1 이 배포되고 있습니다. 테스트 한 바로는 한글처리가 정상적으로 잘 되었습니다.^^

다운로드:

WebKnight 2.1
http://www.aqtronix.com/downloads/WebKnight/2007.10.08/WebKnight.zip


특히 릴리즈노트에 "한글" 같은 비라틴어 라는 말을 한것으로 봐서 한글 사용자의 요구가 많았던것 같습니다.^^

참고로 WebKnight 설정에 관련된 문서가 꽤 많이 쌓여있는데요. 지난번 KISA 에서 매우 상세하게 잘 만들어 놓은 문서와 동영상도 있으므로 웹방화벽 운영에는 큰 도움이 될거라 생각됩니다.^^


설치 운영 가이드  WebKnight 설치 운영 가이드    

설치 운영 동영상 가이드
 WebKnight 설치 운영 동영상 가이드

2007년 10월 9일 화요일

MMDBMS 알티베이스, DBMS 시장점유율 높이기 전력

알티베이스, DBMS 시장점유율 10% 벽 뚫겠다!
http://www.zdnet.co.kr/news/enterprise/dbms/0,39031095,39162101,00.htm

- 한국데이터베이스진흥센터와 한국IDC, KRG 등 시장조사 기관에 따르면, 국내 DBMS 시장은 약 1,500억원 규모로 이 중 알티베이스 6% 가량의 점유율을 기록하고 있는 것으로 조사됐다. 오라클(64%), MS(24%), IBM(19%)를 뒤쫓고 있다.

알티베이스는 이번 신제품 출시와 함께 범용 DBMS 기업으로의 이미지 전환을 계획하고 있다. 대용량 DB 처리가 가능한 제품이 출시됐으며, 현재 타 DBMS와의 연동이 가능한 솔루션 '애니웨어(Anyware)' 개발에도 박차를 가하고 있기 때문이다.

단, 'DBMS하면 오라클' 혹은 '중소형에서 시장을 확대해 가는 MS SQL', '공짜 DBMS MySQL' 등 이미 범용 시장에서 자신의 위치를 굳힌 시장의 인식을 어떻게 타파해 가느냐가 성공의 관건이 될 것이다. 여전히 알티베이스는 '국산 MMDBMS의 강자'라는 인식이 떠나질 않는다.
-


10%, 희망적인 점유율인듯 싶습니다.. 기사 내용에도 있지만, 여전히 오라클/MSSQL 의 시장구도는 잘 무너지지 않고 있습니다.

잘 알려진, 잘 나가는 기업 대부분은 오라클이 이미 자리를 꽤차고 있는 상태에서 그 뒤를 중소규모 시장을 점유하고 있는 Microsoft 가 맹추격을 하고 있지만, 그 점유율은 쉽게 변하고 있지 않기 때문입니다. 그 많큼 어렵다는 얘기겠죠?..^^

알티베이스가 아니더라도, 이미 꽤 알려진 티맥스도 있기에 쉽지 않을것이라 보입니다. 가장 먼저 오픈소스인 MySQL 부터 넘어야 가능하지 않을까요?.. ^^

2007년 10월 6일 토요일

Internet Explorer 7 몇가지 업데이트



http://blogs.msdn.com/ie/archive/2007/10/04/internet-explorer-7-update.aspx
 블로그에 의하면, Internet Explorer 7 이 몇가지가 업데이트되어 배포된다고 합니다.^^

주요 변경 사항은 

IE7 설치 과정 중 WGA (윈도우 정품 인증)를 거쳐야 했던 요구 조건이 없음
IE7의 메뉴 바 가 기본설정으로 변경
IEAK 7 (IE Administration Kit)을 통한 .MSI 파일을 추가로 기업 내 배포 지원


입니다.


작년에 Internet Explorer 7 이 배포 되었을때 자동업데이트 배포를 하여 다운로드 설치가 아닌 자동업데이트 설치가 가능했습니다만,.

기존 Internet Explorer 6 과의 차이점 때문에 기업에서는 Internet Explorer 7 의 자동업데이트 배포를 지연해 달라고 요청을 한적이 있고 현재 Microsoft 는 "Internet Explorer 7 자동 배포 차단 툴킷" 이라는 툴을 배포하고 있습니다.

Internet Explorer 7 Readiness Toolkit
http://www.microsoft.com/downloads/details.aspx?familyid=d13ee10d-2718-47f1-aa86-
1e32d526383d&displaylang=en


Internet Explorer 7 자동 배포 차단 툴킷:
http://www.microsoft.com/korea/windows/ie/ie7/downloads/BlockerToolkit.mspx


하지만, 이미 이러한 자동업데이트 배포 일정 조정은 Microsoft 가 공지한 것처럼 마감이 되어가고 있으므로 기업에서는 Internet Explorer 7 에서 어플리케이션 운용에 문제가 없는지 최종적으로 점검이 필요한 시점입니다.

Internet Explorer 7 자동업데이트 배포 일정조정은 원래 2007년 2분기 였습니다. 이미 2분기를 지나 4분기인데요,. 조만간 자동업데이트를 통해서 배포가 시작될 것 같습니다.

Internet Explorer 7 자동 업데이트 배포 프로세스:
http://www.microsoft.com/korea/windows/products/winfamily/ie/automaticupdates.mspx

이미 은행권에서는 Internet Explorer 7 에 대해서 업데이트가 이루어졌을 뿐만 아니라 보안이 강화된 윈도우 비스타 환경에서 온라인뱅킹에 문제가 없을 정도로 개발이 완료된 상태이기도 합니다.

미리 미리 준비하세요.^^

2007년 10월 5일 금요일

Application Popup / ID: 333

이벤트 형식: 오류
이벤트 원본: Application Popup
이벤트 범주: 없음
이벤트 ID: 333
날짜: 2007-10-04
시간: 오전 9:23:50
사용자: N/A
컴퓨터: SDS-FILE
설명:
레지스트리에서 초기화된 I/O 작업에 복구할 수 없는 오류가 발생했습니다. 레지스트리의 시스템 이미지를 포함하는 파일 중의 하나를 읽거나 쓰거나 내용을 지울 수 없습니다.

자세한 정보는 http://go.microsoft.com/fwlink/events.asp에 있는 도움말 및 지원 센터를 참조하십시오.
데이터:
0000: 00000000 006c0001 00000000 c000014d
0010: 00000000 c000014d 00000000 00000000
0020: 00000000 00000000

정확히 무슨 오류인지 모르겠네요,, 이메시지 나오면서 리붓됐는데,
덤프도 남지 않고...ms에서 검색해봐도 333은 나오지도 않고
도와주세요~

멀티프로토콜(RDP,VMRC,Telnet,VNC,Citrix) 지원 원격접속 도구 - Terminals



Terminals 는, 여러가지 프로토콜을 지원하는 터미널 클라이언트 프로그램입니다. 그래픽 터미널 뿐만 아니라 텔넷 같은 텍스트기반도 지원을 하는데요,.

Terminals 는 Microsoft 지원 오픈소스 프로젝트인 CodePlex 의 프로젝트중 하나입니다. Terminals 는 일반 네이티브코드 프로그램이 아니라 닷넷프레임워크 기반 프로그램입니다.^^

http://www.codeplex.com/Terminals/



장점을 몇가지 보자면,.

역시 RDP,VMRC,Telnet RAS, Execute, Tags, VNC, Citrix 같은 여러가지 프로토콜을 지원하므로 하나의 도구에서 여러가지 터미널을 접속할수 있을 뿐만 아니라, 위처럼 멀티탭, 즐겨찾기,태그 형식의 인터페이스를 지원해서 역시 다중 접속에서 관리가 쉽습니다.^^

다만,. 현재 개발 초기상태라서 품질이 그닥 좋지 않습니다. 일례로 RDP 의 경우 Windows 에 내장된 원격데스크톱 클라이언트 보다 훨씬 느릴뿐만 아니라 RDP 만의 여러가지 기능이 제외되어 있습니다.

아뭏튼,.
하나의 도구에서 여러가지 프로토콜의 터미널 접속을 구현했다는 점에서는 좋은 아이디어 라고 생각됩니다.^^

2007년 10월 4일 목요일

.NET Framework 오픈소스화?



http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-
code-for-the-net-framework-libraries.aspx


블로그에 의하면,. 닷넷프레임워크의 핵심 라이브러리의 소소코드를 공개한다고 합니다. 물론 완전공개가 아니라 Microsoft Reference License (MS-RL) 하에 공개를 하다는 것인데요,.

Microsoft Reference License:
http://www.microsoft.com/resources/sharedsource/licensingbasics/referencelicense.mspx

System,
System.IO,
System.Collections,
System.Configuration,
System.Threading,
System.Net,
System.Security,
System.Runtime,
System.Text,
ASP.NET (System.Web),
Windows Forms (System.Windows.Forms),
ADO.NET (System.Data),
XML (System.Xml),
WPF (System.Windows) 등등....

아뭏튼, 해당 블로그의 포스트에는 이런 소소코드 공개에 대해서 많은 댓글이 달리고 있네요..^^

PHP 가속 FastCGI Extension for IIS6.0 and IIS5.1

이미 알려진바와 같이, PHP 가속기를 제작하는 젠드사와 함께 IIS 에서 PHP 의 속도를 획기적으로 높일수 있는 FastCGI 모듈이 IIS 7 에서 지원된다고 하였는데요,. 기존의 IIS 6.0 및 IIS 5.1 에서도 FastCGI 모듈을 지원합니다.


위버젼의 FastCGI 모듈은 다음 운영체제 및 웹서버에서만 가능합니다.

Windows XP SP2 (IIS 5.1)
Windows XP x64 edition (IIS6.0)
Windows Server 2003 SP2 (IIS 6.0)
Windows Server 2003 x64 edition (IIS6.0) 

Go Live FastCGI Extension installer package for 32-bit platforms
http://www.iis.net/Downloads/files/fastcgi/GoLive/fcgisetup32.msi

Go Live FastCGI Extension installer package for 64-bit platforms
http://www.iis.net/Downloads/files/fastcgi/GoLive/fcgisetup64.msi


03-FastCGI.gif

Vbscript - 지정된 일자 초과 특정 확장자(.bak) 파일 삭제

다음 스크립트는 특정 확장자에 대해서 지정된 일자가 초과된 경우 삭제하는 스크립트로 로그파일이니 백업파일 관리에 요긴하게 이용할수 있는 스크립트입니다.

dtmDate = Date - 7 '초과일자

strDay = Day(dtmDate)

If Len(strDay) < 2 Then
    strDay = "0" & strDay
End If

strMonth = Month(dtmDate)

If Len(strMonth) < 2 Then
    strMonth = "0" & strMonth
End If

strYear = Year(dtmDate)

strTargetDate = strYear & strMonth & strDay

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set FileList = objWMIService.ExecQuery _
    ("ASSOCIATORS OF {Win32_Directory.Name='C:\Scripts'} Where " _
        & "ResultClass = CIM_DataFile")

For Each objFile In FileList
    strDate = Left(objFile.CreationDate, 8)
    If strDate < strTargetDate Then
        If objFile.Extension = "bak" Then
            objFile.Delete
        End If
    End If
Next

이와 같은 스크립트는 WMI 를 이용하여 특정 폴더의 파일목록을 가져와서 일자를 비교하는 방법인데요, 이전에 팁에 등록되어 있던 다음 스크립트의 경우에는,

오래된 파일 삭제 vbscript
http://www.serverinfo.pe.kr/TipnTech.aspx?Seq=242

일반적인 파일시스템 I/O 개체를 이용해서 지정된 디렉토리의 파일목록을 가져와서 비교하는 방법입니다. 물론 스크립트 수준으로는 상황에 따라서 적절히 이용하면 될듯 싶습니다.^^




03-Microsoft_TechNet.gif

Vbscript - 실시간 이벤트로그 메시지중 특정 단어가 포함된 로그 출력

다음 스크립트는, WMI 를 이용하여 실시간으로 생성되는 이벤트 로그중 메시지 내용중에 특정 단어가 포함되어 있는 이벤트 로그만 출력하는 스크립트입니다.

strComputer = "."

Set objWMIService = GetObject("winmgmts:{(Security)}\\" & _
        strComputer & "\root\cimv2")

Set colEvents = objWMIService.ExecNotificationQuery _   
    ("Select * From __InstanceCreationEvent Where " _
        & "TargetInstance isa 'Win32_NTLogEvent'")

Do
    Set objEvent = colEvents.NextEvent
    If InStr(LCase(objEvent.TargetInstance.Message), "특정단어") Then
        Wscript.Echo Now
        Wscript.Echo "Category: " & objEvent.TargetInstance.Category
        Wscript.Echo "Event Code: " & objEvent.TargetInstance.EventCode
        Wscript.Echo "Message: " & objEvent.TargetInstance.Message
        Wscript.Echo "Record Number: " & objEvent.TargetInstance.RecordNumber
        Wscript.Echo "Source Name: " & objEvent.TargetInstance.SourceName
        Wscript.Echo "Event Type: " & objEvent.TargetInstance.Type
        Wscript.Echo
    End If
Loop

물론 응용을 하면 매우 다양하게 쓸수가 있습니다. 이를테면,. 특정 이벤트 코드나 원본이라든가 말이죠..^^

WMI를 이용한 이벤트로그 모니터링
http://www.serverinfo.pe.kr/TipnTech.aspx?Seq=256




03-Microsoft_TechNet.gif

Vbscript - 프로세스의 시작 시간 조회

다음 스크립트는, 특정 프로세스의 시작시간을 조회하는 스크립트로 WMI 를 이용한 스크립트입니다.

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colServices = objWMIService.ExecQuery _
    ("Select * From Win32_Service Where Name = 'Spooler'")

 
For Each objService in colServices
    intProcessID = objService.ProcessID

    Set colProcesses = objWMIService.ExecQuery _
        ("Select * From Win32_Process Where ProcessID = " & intProcessID)

    For Each objProcess in colProcesses
        dtmStartTime = objProcess.CreationDate

        dtmConvertedDate = CDate(Mid(dtmStartTime, 5, 2) & "/" & _
            Mid(dtmStartTime, 7, 2) & "/" & Left(dtmStartTime, 4) _
                & " " & Mid (dtmStartTime, 9, 2) & ":" & _
                    Mid(dtmStartTime, 11, 2) & ":" & Mid(dtmStartTime,13, 2))

        Wscript.Echo DateDiff("n", dtmConvertedDate, Now)
    Next
Next

위 스크립트의 경우, 스풀러 프로세스에 대한 것이지만, 해당 컴퓨터의 모든 프로세스에 대한 것을 확인할려면 WHERE 절을 없애면 됩니다.

또한,. 위 스크립트의 경우 프로세스의 생성시간만 출력하나 추가적인 컬럼을 출력 하도록 수정도 하여 필요하게 쓸수 있습니다.

WMI-실행중인 프로세스 리스트 출력
http://www.serverinfo.pe.kr/TipnTech.aspx?Seq=146




03-Microsoft_TechNet.gif

Vbscript - 원격 컴퓨터의 시간 확인

다음 스크립트는 로컬 또는 원격 컴퓨터의 시간을 확인하는 스크립트 입니다. WMI 를 이용하는 방법으로는 2가지 클래스에서 쿼리가 가능합니다.


Win32_LocalTime 클래스

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * From Win32_LocalTime")
 
For Each objItem in colItems
    strTime = objItem.Hour & ":" & objItem.Minute & ":" & objItem.Second
    dtmTime = CDate(strTime)
    Wscript.Echo FormatDateTime(dtmTime, vbFormatLongTime)
Next


Win32_OperatingSystem 클래스

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * From Win32_OperatingSystem")

For Each objItem in colItems
    strTime = objItem.LocalDateTime
    dtmTime = CDate(Mid (strTime, 9, 2) & ":" & Mid(strTime, 11, 2) & ":" & _
        Mid(strTime, 13, 2))
    dtmTime = CDate(dtmTime)
    Wscript.Echo FormatDateTime(dtmTime, vbFormatLongTime)
Next

물론 원격 컴퓨터의 시간을 확인할려면 RPC 권한이 있어야 하고, Active Direcotry 환경에서는 주기적인 시간 동기화가 되므로 위와 같은 조회가 필요없겠죠?.. ^^





03-TechNetB_masthead_ltr.gif

Vbscript - Administrator 패스워드를 일괄적으로 변경하기

다음 스크립트는, 도메인에 속해있는 컴퓨터의 Administrator 계정의 패스워드를 일괄 변경하는 스크립트입니다.

On Error Resume Next

Const ADS_SCOPE_SUBTREE = 2

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"

Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
    "Select Name From 'LDAP://DC=microsoft,DC=com' Where objectClass='computer'" 
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst

Do Until objRecordSet.EOF
    strComputer = objRecordSet.Fields("Name").Value

    Set objUser = GetObject("WinNT://" & strComputer & "/Administrator")
    objUser.SetPassword "변경할 패스워드"

    objRecordSet.MoveNext
Loop

물론 다른 계정의 패스워드도 일괄 변경이 가능하겠습니다.

Active Directory 환경에서는 해당 도메인에 속해 있는 컴퓨터 목록을 쉽게 쿼리가 가능하므로 해당 도메인의 모든 컴퓨터의 OS 환경을 정리할수 있겠죠..^^

다음 스크립트는, Active Directory 에서 컴퓨터 목록을 조회하는 스크립트 입니다.

On Error Resume Next

Const ADS_SCOPE_SUBTREE = 2

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection

objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

objCommand.CommandText = _
    "SELECT CN FROM 'LDAP://dc=microsoft,dc=com' WHERE objectCategory='computer'" 
Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst

Do Until objRecordSet.EOF
    strComputer = objRecordSet.Fields("Name").Value

    Set objWMIService = GetObject _
        ("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery _
        ("Select * From Win32_OperatingSystem")
    For Each objItem in ColItems
        Wscript.Echo strComputer & ": " & objItem.Caption
    Next

    objRecordSet.MoveNext
Loop





03-TechNetB_masthead_ltr.gif

Vbscript - 30분마다 특정 파일의 수정여부 감시

다음 스크립트는, 특정시간 (예제에서는 30분) 마다 지정된 파일의 수정여부를 감시하는 WMI 를 이용한 스크립트 입니다.

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_Datafile Where Name = 'C:\\Scripts\\Application.log'")

For Each objFile in colFiles
    strOriginalTimestamp = objFile.LastModified
Next

Wscript.Echo "Monitoring application log file: " & Now
Wscript.Echo

Do While True
    Wscript.Sleep 1800000
    Set colFiles = objWMIService.ExecQuery _
        ("Select * from CIM_Datafile Where Name = 'C:\\Scripts\\Application.log'")     For Each objFile in colFiles
        strLatestTimestamp = objFile.LastModified
    Next 

    If strLatestTimestamp <> strOriginalTimestamp Then
        strOriginalTimestamp = strLatestTimeStamp
    Else
        Wscript.Echo "ALERT: " & Now
        Wscript.Echo "The application log file has not been modified in the last 30 minutes."
        Wscript.Echo
        strOriginalTimestamp = strLatestTimeStamp
    End If
Loop


스크립트에서는 시간을 체크하기 위한 2개의 변수가 있는데, 최초 실행 첫번째에 마지막 수정된 시간을 기록하고 그 다음 부터 루프를 돌면서 매번 체크를 하게 됩니다.

물론 시간은 체크코자 하는 간격을 조금더 줄이거나 늘일수 있습니다. 위 스크립트는 WMI 를 이용했으나, 닷넷을 이용하다면 FileSystemWatcher() 이벤트를 이용해서 훨씬더 쉽게 그리고 실시간으로 체크를 할수도 있습니다. ^^


FileSystemWatcher 이벤트 예제
http://msdn2.microsoft.com/ko-kr/library/system.io.filesystemwatcher_events(vs.80).aspx

public class Watcher
{
    public static void Main()
    {
        Run();
    }

    [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
    public static void Run()
    {
        string[] args = System.Environment.GetCommandLineArgs();

        if(args.Length != 2)
        {
            Console.WriteLine("Usage: Watcher.exe (directory)");
            return;
        }

        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = args[1];
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        watcher.Filter = "*.txt";

        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);

        watcher.EnableRaisingEvents = true;

        Console.WriteLine("Press \'q\' to quit the sample.");
        while(Console.Read()!='q');
    }

    private static void OnChanged(object source, FileSystemEventArgs e)
    {
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }
}





03-TechNetB_masthead_ltr.gif

Vbscript - 지정된 기간에 생성된 계정 목록 조회

다음 스크립트는, 지정된 일자 사이에 생성된 계정을 조회하는 ADSI 인터페이스를 이용한 스크립트입니다.

On Error Resume Next

Const ADS_SCOPE_SUBTREE = 2

dtmCreationDate1 = "20070701000000.0Z"
dtmCreationDate2 = "20070731000000.0Z"

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection

objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

objCommand.CommandText = _
    "SELECT Name, whenCreated FROM 'LDAP://dc=fabrikam,dc=com' WHERE " &_
    "objectClass='user' "  & _
     "AND whenCreated>='" & dtmCreationDate1 & "' AND whenCreated<='" &_
     dtmCreationDate2 & "'"
Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst

Do Until objRecordSet.EOF
    Wscript.Echo objRecordSet.Fields("Name").Value, &_
                       objRecordSet.Fields("whenCreated").Value
    objRecordSet.MoveNext
Loop


시작일자는 dtmCreationDate1 이고, 종료일자는 dtmCreationDate2 입니다.

숫자값은 년월일자 이며 일자다음에 숫자는 2단위 시,분,초입니다.  마지막 .0Z 는 로컬시간과 그리니치 시간차를 표시합니다.^^




03-TechNetB_masthead_ltr.gif

Vbscript - 로그온한 사용자의 디스크 할당량 리포팅

다음 스크립트는 로그온한 사용자의 디스크 할당량, 즉 해당 계정이 소유권을 가지고 있는 파일의 용량을 알아 볼수 있는 스크립트입니다.

이 스크립트 역시 WMI 를 이용하는 방법입니다.

strComputer = "."

Set objNetwork = CreateObject("Wscript.Network")
strUser = objNetwork.UserName
strDomain = objNetwork.UserDomain

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colDisks = objWMIService.ExecQuery _
    ("Select * from Win32_QuotaSetting Where State = 1")

For Each objDisk in colDisks
    strDrive = objDisk.VolumePath
    strDrive = Replace(strDrive, "\", "")

    Set objQuota = objWMIService.Get _
        ("Win32_DiskQuota.QuotaVolume='Win32_LogicalDisk.DeviceID=" & chr(34) &_
            strDrive & chr(34) & "'," & _
            "User='Win32_Account.Domain=" & chr(34) & strDomain & chr(34) & _
                ",Name=" & chr(34) & strUser & chr(34) & "'")

    Wscript.Echo "Drive: " & objDisk.VolumePath
    Wscript.Echo "Disk Space Used: " & Int(objQuota.DiskSpaceUsed / 1048576) & " megabytes"
    Wscript.Echo "Quota Limit: " & Int(objQuota.Limit  / 1048576) & " megabytes"
    Wscript.Echo "Disk Space Remaining: " & Int((objQuota.Limit - objQuota.DiskSpaceUsed) 
                         / 1048576) &  " megabytes"
    Wscript.Echo
Next

역시 이용하기 나름이지만,.^^




03-TechNetB_masthead_ltr.gif

Vbscript - 이벤트로그를 텍스트 파일로 백업하는 방법

다음 스크립트는 이벤트 로그를 텍스트 파일에 백업하는 스크립트입니다. WMI 를 이용하는 방법.

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colEvents = objWMIService.ExecQuery _
    ("Select * from Win32_NTLogEvent Where LogFile='Application'")

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("C:\Scripts\Events.txt")

For Each objEvent in colEvents
    strTimeWritten = objEvent.TimeWritten

    dtmTimeWritten = CDate(Mid(strTimeWritten, 5, 2) & "/" & _
        Mid(strTimeWritten, 7, 2) & "/" & Left(strTimeWritten, 4) _
            & " " & Mid (strTimeWritten, 9, 2) & ":" & _
                Mid(strTimeWritten, 11, 2) & ":" & Mid(strTimeWritten, 13, 2))

    dtmDate = FormatDateTime(dtmTimeWritten, vbShortDate)
    dtmTime = FormatDateTime(dtmTimeWritten, vbLongTime)

    strEvent = dtmDate & vbTab
    strEvent = strEvent & dtmTime & vbTab
    strEvent = strEvent & objEvent.SourceName & vbTab
    strEvent = strEvent & objEvent.Type & vbTab
    strEvent = strEvent & objEvent.Category & vbTab
    strEvent = strEvent & objEvent.EventCode & vbTab
    strEvent = strEvent & objEvent.User & vbTab
    strEvent = strEvent & objEvent.ComputerName & vbTab

    strDescription = objEvent.Message
    If IsNull(strDescription) Then
        strDescription = "The event description cannot be found."
    End If
    strDescription = Replace(strDescription, vbCrLf, " ")
    strEvent = strEvent & strDescription

    objFile.WriteLine strEvent
Next

objFile.Close

코드 설명을 하자면,. 위 스크립트는 응용프로그램 로그를 백업하며, Events.txt 에 저장합니다. 코드 중간에는 이벤트로그 형식의 시간(UTC)을 변환하는 루틴이 추가되어 있습니다.^^


위 스크립트의 경우 로컬 컴퓨터의 정보를 조회하는 것이지만,. 네트워크에 다른 컴퓨터도 조회가 가능합니다. 다만 해당 컴퓨터에 접속 가능한 RPC 권한이 있어야 합니다.

Active Directory 환경에서는 해당 도메인에 속해 있는 컴퓨터 목록을 쉽게 쿼리가 가능하므로 해당 도메인의 모든 컴퓨터의 OS 환경을 정리할수 있겠죠..^^

다음 스크립트는, Active Directory 에서 컴퓨터 목록을 조회하는 스크립트 입니다.

On Error Resume Next

Const ADS_SCOPE_SUBTREE = 2

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection

objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

objCommand.CommandText = _
    "SELECT CN FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='computer'" 
Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst

Do Until objRecordSet.EOF
    strComputer = objRecordSet.Fields("Name").Value

    Set objWMIService = GetObject _
        ("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery _
        ("Select * From Win32_OperatingSystem")
    For Each objItem in ColItems
        Wscript.Echo strComputer & ": " & objItem.Caption
    Next

    objRecordSet.MoveNext
Loop





03-TechNetB_masthead_ltr.gif

2007년 10월 3일 수요일

Vbscript - 설치된 Windows 비스타 버젼 확인

다음 스크립트는 설치된 윈도우 비스타의 버젼을 알아보는 스크립트 입니다. WMI 를 이용하는 방법입니다.

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * From Win32_OperatingSystem")

For Each objItem in colItems
    If Instr(objItem.Caption, "Vista") Then
        Select Case objItem.OperatingSystemSKU
             Case 0 strVersion = "Undefined."
             Case 1 strVersion = "Ultimate Edition."
             Case 2 strVersion = "Home Basic Edition."
             Case 3 strVersion = "Home Basic Premium Edition."
             Case 4 strVersion = "Enterprise Edition."
             Case 5 strVersion = "Home Basic N Edition."
             Case 6 strVersion = "Business Edition."
             Case 7 strVersion = "Standard Server Edition."
             Case 8 strVersion = "Datacenter Server Edition."
             Case 9 strVersion = "Small Business Server Edition."
             Case 10 strVersion = "Enterprise Server Edition."
             Case 11 strVersion = "Starter Edition."
             Case 12 strVersion = "Datacenter Server Core Edition."
             Case 13 strVersion = "Standard Server Core Edition."
             Case 14 strVersion = "Enterprise Server Core Edition."
             Case 15 strVersion = "Enterprise Server IA64 Edition."
             Case 16 strVersion = "Business N Edition."
             Case 17 strVersion = "Web Server Edition."
             Case 18 strVersion = "Cluster Server Edition."
             Case 19 strVersion = "Home Server Edition."
             Case 20 strVersion = "Storage Express Server Edition."
             Case 21 strVersion = "Storage Standard Server Edition."
             Case 22 strVersion = "Storage Workgroup Server Edition."
             Case 23 strVersion = "Storage Enterprise Server Edition."
             Case 24 strVersion = "Server For Small Business Edition."
             Case 25 strVersion = "Small Business Server Premium Edition."

        End Select
        Wscript.Echo "This computer is running Windows Vista " & strVersion
    Else
        Wscript.Echo "This computer is not running Windows Vista."
    End If
Next

위 스크립트의 경우 로컬 컴퓨터의 정보를 조회하는 것이지만,. 네트워크에 다른 컴퓨터도 조회가 가능합니다. 다만 해당 컴퓨터에 접속 가능한 RPC 권한이 있어야 합니다.


Active Directory 환경에서는 해당 도메인에 속해 있는 컴퓨터 목록을 쉽게 쿼리가 가능하므로 해당 도메인의 모든 컴퓨터의 OS 환경을 정리할수 있겠죠..^^

다음 스크립트는, Active Directory 에서 컴퓨터 목록을 조회하는 스크립트 입니다.

On Error Resume Next

Const ADS_SCOPE_SUBTREE = 2

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection

objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

objCommand.CommandText = _
    "SELECT CN FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='computer'" 
Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst

Do Until objRecordSet.EOF
    strComputer = objRecordSet.Fields("Name").Value

    Set objWMIService = GetObject _
        ("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery _
        ("Select * From Win32_OperatingSystem")
    For Each objItem in ColItems
        Wscript.Echo strComputer & ": " & objItem.Caption
    Next

    objRecordSet.MoveNext
Loop





03-TechNetB_masthead_ltr.gif

Vbscript - 텍스트 파일에서 IP 주소 형식 찾기

다음 스크립트는, 텍스트 문서에서 IP 주소 형식을 찾아내는 스크립트 입니다. 정규편식을 이용한 방법이구요..^^

Const ForReading = 1

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt", ForReading)

strSearchString = objFile.ReadAll

objFile.Close

Set objRegEx = CreateObject("VBScript.RegExp")

objRegEx.Global = True  
objRegEx.Pattern = "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"

Set colMatches = objRegEx.Execute(strSearchString) 

If colMatches.Count > 0 Then
    For Each strMatch in colMatches  
       Wscript.Echo strMatch.Value
    Next
End If


Introduction to Regular Expressions :
http://msdn2.microsoft.com/en-us/library/6wzad2b2.aspx

Vbscript - 워드 문서의 속성 조회

다음 스크립트는 워드문서의 작성자, 작성일등등 속성을 조회하는 스크립트 입니다. 다만 이것은 com 개체가 있어야 하므로 오피스가 깔려있거나 해당 개체가 등록되어 있어야 합니다. ^^

Set objWord = CreateObject("Word.Application")
objWord.Visible = True

Set objDoc = objWord.Documents.Open("C:\Scripts\Test.doc")

Set colFields = objDoc.Fields
colFields.Update

For Each objField in colFields
    Select Case objField.Type
        Case 20
        Set objRange = objField.Result
        strUser = objRange.Text
        Wscript.Echo "Last Saved By: " & strUser
    End Select
Next

위 예제 스크립트는 작성자를 조회하는 부분인데요. 작성자의 타입은 20 입니다. 문서 소유자의 경우 17 입니다.

좀더 자세하고 워드 문서에서 지원하는 수많은 속성은 다음 문서를 참고해 보세요.

WdFieldType
http://msdn2.microsoft.com/en-us/library/Bb213727.aspx





03-TechNetB_masthead_ltr.gif

Vbscript - 텍스트 파일에서 지정된 단어 찾기

다음 스크립트는, 지정된 텍스트 문서에서 지정된 단어를 찾는 스크립트 입니다.

지정된 문서내용 및 찾고자 하는 목록을 모두 읽어서 변수에 넣은 다음에 찾고자하는 단어를 리턴을 기준으로 배열을 만든 다음에 루프를 돌려서 찾는 스크립트 입니다.


Const ForReading = 1

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\Scripts\문서파일.txt", ForReading)

strContents = objFile.ReadAll
objFile.Close

Set objFile = objFSO.OpenTextFile("C:\Scripts\단어목록.txt", ForReading)

strSearchTerms = objFile.ReadAll
objFile.Close

arrSearchTerms = Split(strSearchTerms, vbCrLf)

For Each strItem in arrSearchTerms
    intFound = InStr(strContents, strItem)
    If intFound = 0 Then
        Wscript.Echo "The search term " & strItem & " was not found."
    End If
Next


찾고자 하는 텍스트 문서 예제

'Curiouser and curiouser!' cried Alice (she was so much surprised, that
for the moment she quite forgot how to speak good English); 'now I'm
opening out like the largest telescope that ever was! Good-bye, feet!'
(for when she looked down at her feet, they seemed to be almost out of
sight, they were getting so far off). 'Oh, my poor little feet, I wonder
who will put on your shoes and stockings for you now, dears? I'm sure
_I_ shan't be able! I shall be a great deal too far off to trouble myself
about you: you must manage the best way you can; --but I must be kind to
them,' thought Alice, 'or perhaps they won't walk the way I want to go! 
Let me see: I'll give them a new pair of boots every Christmas.'


찾고자 하는 단어 목록

boots
hat
pants
shirt
shoes
telescope





03-TechNetB_masthead_ltr.gif

.NET 서비스 설치 관리자 / ID: 0

오류 때문에 'D:\WWW_ROOT\NEW\webMail\webMail.dll'을(를) '{4D51F77A-8D6A-478F-97AB-5DFFEDD93E6E}' 에 설치하지 못했습니다. System.EnterpriseServices.RegistrationException: 'ChwebMail, Version=1.0.1598.20250, Culture=neutral, PublicKeyToken=58eeaa863ca0ff3c'에 대한 'D:\WWW_ROOT\NEW\webMail\webMail.tlb' 형식 라이브러리를 생성하지 못했습니다. ---> System.UnauthorizedAccessException: 액세스가 거부되었습니다.
at System.EnterpriseServices.ICreateTypeLib.SaveAllChanges()
at System.EnterpriseServices.RegistrationDriver.GenerateTypeLibrary(Assembly asm, String tlb, Report report)
--- 내부 예외 스택 추적의 끝 ---
Server stack trace: at System.EnterpriseServices.RegistrationDriver.GenerateTypeLibrary(Assembly asm, String tlb, Report report)
at System.EnterpriseServices.RegistrationDriver.InstallAssembly(RegistrationConfig regConfig, Object obSync)
at System.EnterpriseServices.RegistrationHelperTx.InstallAssemblyFromConfig(RegistrationConfig& regConfig, Object sync)
at System.Runtime.Remoting.Messaging.Message.Dispatch(Object target, Boolean fExecuteInContext)
at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext) Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at System.EnterpriseServices.RegistrationHelperTx.InstallAssemblyFromConfig(RegistrationConfig& regConfig, Object sync)
at System.EnterpriseServices.RegistrationHelper.TryTransactedInstall(RegistrationConfig regConfig)
at System.EnterpriseServices.RegistrationHelper.InstallAssemblyFromConfig(RegistrationConfig& regConfig)
at System.EnterpriseServices.RegistrationHelper.InstallAssembly(String assembly, String& application, String partition, String& tlb, InstallationFlags installFlags)
at System.EnterpriseServices.Internal.ComManagedImportUtil.InstallAssembly(String asmpath, String parname, String appname)

2007년 10월 2일 화요일

PerfDisk / ID: 2001

시스템에서 디스크 성능 정보를 읽을 수 없습니다.
해당 카운터를 나타내려면 적어도 하나의 디스크 또는 논리적 볼륨에 대해 디스크 성능 카운터가 사용되어야 합니다.
디스크 성능 카운터는 하드웨어 장치 관리자를 통해 설정할 수 있습니다.
반환된 상태 코드는 데이터 DWORD 0입니다.

부팅 시작 드라이버 x86 및 x64 임베디드 서명 필수

2007년 6월 1일부터 x86 및 x64 버전의 Windows Vista용 부팅 시작 드라이버는 모두 임베디드 서명을 한 다음에 Winqual(Windows Quality Online Services) 웹 사이트에 제출해야 합니다.

부팅 시작 드라이버의 임베디드 서명 요구 사항은 장치에 관한 Windows 로고 프로그램 요구 사항 DEVFUND-0027뿐 아니라 Windows Vista 시스템에 관한 SYSFUND-0002 및 SYSFUND-0122 요구 사항과 Windows Server 2008 시스템에 관한 SYSFUND-0054 및 SYSFUND-0122 요구 사항에도 정의되어 있습니다.

임베디드 서명은 SPC(소프트웨어 게시 인증서)를 사용한 자체 서명을 통해 이루어져야 하며, 패키지를 Winqual에 제출하기 전에 완료한 상태여야 합니다.

부팅 시작 드라이버의 임베디드 서명 작성에 관한 자세한 내용은
'http://www.microsoft.com/whdc/winlogo/drvsign/kmcs_walkthrough.mspx'
에 있는 커널 모드 코드 서명 절차(Kernel Mode Code Signing Walkthrough) 백서를 참조하십시오.

http://www.microsoft.com/whdc/default.mspx


- Windows 블루스크린의 주요 원인중 하나가 바로 하드웨어 드라이버 때문인데요. Windows XP 및 Windows Server 2003 까지는 인증되지 않았더라도 설치가 가능했습니다.

물론 이걸로 드라이버 개발자들 사이에서는 불평이 있는것도 사실이지만... Microsoft 로서는 자체 소프트웨어 오류가 아닌 외부 소프트웨어로 인해서 발생하는 품질에 대한 이미지 하락을 최소화 하기 위함 이기도 할것이라 봅니다. -

VBScript & Powershell 퀵 레퍼런스

VBScript Quick Reference 다운로드:

http://www.microsoft.com/downloads/details.aspx?FamilyID=9c80b0df-b9b4-4fcb-b513-02f8f
40049e8&DisplayLang=en


Windows PowerShell Quick Reference 다운로드:

http://www.microsoft.com/downloads/details.aspx?familyid=DF8ED469-9007-401C-85E7-4664
9A32D0E0&displaylang=en





출력해서 뽑아서 놓으면, 시스템 관리 및 운영에 적용할수 있는 전체적인 기능을 한눈에 볼수 있어서 좋은 점이 있을듯 싶고, 보다 상세하고 자세한 스크립트 예제는 다음 사이트를 참조하면 좋습니다.^^

http://www.microsoft.com/technet/scriptcenter/default.mspx
http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx


01-VBScriptQuickReference.gif

Group Policy Management Console (GPMC 그룹정책관리콘솔) 예제 스크립트

Windows Server 2008 및 VISTA 에서 지원하는 스크립트를 통해서 GPMC 작업을 자동화 할수  있는 예제 스크립트가 공개되었습니다.

Group Policy Team Blog

http://blogs.technet.com/grouppolicy/archive/2007/09/30/group-policy-management-
console-sample-scripts.aspx


http://msdn2.microsoft.com/en-us/library/aa814152.aspx


다음과 같은 관리 작업이 가능하며,

Backing up an Individual GPO
Backing up the GPOs in a Domain
Creating a Copy of a GPO
Creating a New GPO
Creating a Policy Environment Using an XML File
Creating an XML File that Represents a Policy Environment
Create Migration Table
Deleting a GPO
Grant Permissions for all GPOs in a Domain
Importing a GPO
Importing Multiple GPOs into a Domain
Restoring a GPO
Restoring All GPOs in a Domain
Setting GPO Permissions
Setting Permissions for all GPOs Linked to a Scope of Management
Setting Permissions to Create GPOs
Setting Policy-related Permissions on a SOM

예제 스크립트를 통해서 다음과 같은 작업이 가능합니다.

Listing All GPOs in a Domain
Listing Disabled GPOs
Listing GPO Information
Listing GPOs at a Backup Location
Listing GPOs by Policy Extension
Listing GPOs by Security Group
Listing GPOs Orphaned in SYSVOL
Listing GPOs With Duplicate Names
Listing GPOs Without Security Filtering
Listing SOM Information
Listing SOMs With Links to GPOs in External Domains
Listing Unlinked GPOs in a Domain
Printing the SOM Policy Tree
Generate Reports for all GPOs
Generate Reports for a GPO



예제스크립트 다운로드:

http://www.microsoft.com/downloads/details.aspx?FamilyId=38C1A89B-A6D2-
4F2A-A944-9236999AEE65&displaylang=en


Windows Server 2008 RC0/Virtualization CTP FAQ

Windows Virtualization 팀 블로그에, Windows Server 2008 RC0 에 CTP 버젼으로 추가된 WSv 에 관련된 FAQ 내용이 등록되어 있는데요,.

http://blogs.technet.com/virtualization/archive/2007/09/28/windows-server-2008-rc0-and-
virtualization-ctp-faq.aspx


위 내용에 대해서 Microsoft 백승주님이 블로그에 한글로 번역해서 올려 놓은신 내용이 있어서 공유차원에서 올려 봅니다.

http://blogs.technet.com/koalra/archive/2007/09/29/wsv-technical-preview.aspx


Q: WSv 버전의 설치 가이드와 릴리즈 노트는 어디있나요?

A: 릴리즈노트: http://www.microsoft.com/downloads/details.aspx?FamilyId=3ED582F0-F844-
40BA-B692-230845AF1149&displaylang=en


설치 가이드: http://www.microsoft.com/windowsserver2008/virtualization/install.mspx

한글판 설치 가이드 : http://blogs.technet.com/koalra/archive/2007/09/25/windows-server-
2008-rc0-windows-server-virtualization.aspx

Q: 가상화 역할이 원래 Windows Server 2008 Server Core에 설치된다고 하지 않았나요?

A: WSv는 원래 Server Core와 Full Installation에 모두 설치할 수 있게 되어져 있습니다만, Technical Preview 버전은 Full Installation에만 설치됩니다.

Q: 가상 머신으로 Windows Server 2008 Server Core를 설치할 수 있나요?

A: 당연히 됩니다. :)

Q: 설치한 가상 머신에 대해 Integration Componenet를 설치하는 방법을 알려주세요.

A: Windows Server 2008 Server Core가 아니라면, 메뉴를 이용해서 간단히 마법사를 띄울 수 있습니다.
1. 가상 머신에서 관리자 권한으로 로그온합니다.
2. 가상 머신 Windows에서 Action 메뉴에 Insert Integration Services Startup Disk를 클릭합니다.
3. GUI 버전의 Windows는 자동으로 설치 마법사가 올라옵니다. CUI나 설치 마법사가 자동으로 실행되지 않을 경우, 4단계로 갑니다.
4. A. x64의 경우 D:\Support\amd64\Setup.exe
   B. x86의 경우 D:\Support\x86\Setup.exe
5. 설치 시작!

Q: Windows Server 2003/2008 RC0를 설치하였습니다. 가상 네트워크 아답타가 없다고 나오는데, 어떻게 해야 하나요?

A: WSv는 에뮬레이션 방식의 가상화가 아니고, Synthetic Hardware - 다시 말해 실제 하드웨어에 대해 사용하는 모델 -을 제공하므로, Integration Component를 설치해야 합니다. 설치 방법은 위의 Q에 있습니다.

Q: Windows XP나 Windows Vista, Windows 2000을 가상 머신에 설치한 후, Integration Component를 설치하려고 했습니다만, Windows Serevr 2003, 2008만 지원한다고 합니다.

A: 현재의 WSv Technical Preview는 Windows Server 2003/2008 x86,x64만 지원합니다.

Q: 가상 머신 설정에 "Network Adapter"와 "Legacy Network Adapter"가 있습니다. 둘 사이의 차이점은 무엇인가요?

A: Network Adapter의 의미는 Hypervisor 기반의 Synthetic Network Adapter를 의미합니다. 이는 고성능 및 실제 하드웨어에 대해서 접근이 가능합니다. 이러한 Synthetic Hardware를 사용하시기 위해서는 Integration Components가 필요합니다. Legacy Network Adapter는 Integration Components를 지원하지 않는 운영 체제에서 네트워킹을 사용하기 위해 DEC/Intel 21140 Ethernet adapter를 에뮬레이션해주는 것으로서, Hypervisor 기반은 아닙니다.

Q: 영문 이외의 Windows Server 2008 RC)를 다운로드, 설치 후, WSv 설치용 MSU를 실행하였습니다만 에러가 나타납니다. "This update does not apply to your system." 해결책은 없나요?

A: Windows Server RC0의 WSv Technical Preview는 영문판만 지원합니다.

Q: Linux에 대한 Integration Componenet는 현재 없나요?

A: 네 없습니다.

Q: 한글판 Windows Server 2003을 가상 머신 환경에 설치하였습니다만 Integration Components 설치시 에러가 납니다.

A: 현재 WSv Technical Preview는 가상 머신 환경에서 사용할 Integration Components에 대해 영문판만 지원합니다. 차후 버전에서는 각 언어별 운영 체제에 대해 지원할 예정입니다.


2019년 12월 MS 취약점 패치 주요 사항

서버 관련 주요 중요 취약점 CVE-2019-1470 | Hyper-V 정보 유출 취약성 https://portal.msrc.microsoft.com/ko-KR/security-guidance/advisory/CVE-2019-1470 CVE...