맨위로가기

VB스크립트

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

VBScript는 1996년 마이크로소프트에서 윈도우 스크립트 기술의 일부로 출시된 스크립트 언어이다. 웹 개발을 위해 JScript와 함께 개발되었으며, 이후 윈도우 시스템 관리자들의 자동화 도구로 활용되었다. VBScript는 Windows Script Host(WSH)의 표준 언어로 채택되어 윈도우의 범용 스크립트 언어로 사용되었으나, .NET 프레임워크의 등장과 ASP.NET의 보급, 그리고 보안 문제로 인해 쇠퇴하였다. 2023년 10월, 마이크로소프트는 Windows 클라이언트에서 VBScript 지원을 중단하고, 윈도우 파워쉘로의 전환을 권장했다. VBScript는 OLE 서버의 접착제 역할을 하는 스크립트 언어로 설계되었으며, HTML, Windows 스크립트 호스트, 액티브 서버 페이지 등 다양한 환경에서 활용되었다.

더 읽어볼만한 페이지

  • 1996년 개발된 프로그래밍 언어 - OCaml
    OCaml은 ML 계열의 함수형 프로그래밍 언어로서 클래스 기반 객체 지향 프로그래밍 기능을 지원하며, 강력한 타입 시스템, 타입 추론, 꼬리 재귀 최적화 등의 특징을 가진다.
  • 1996년 개발된 프로그래밍 언어 - SQL/PSM
  • 마이크로소프트의 프로그래밍 언어 - 파워셸
    파워셸은 마이크로소프트에서 개발한 작업 자동화 솔루션으로, 명령줄 셸과 스크립트 언어의 기능을 결합하여 윈도우 시스템 관리를 위해 설계되었으며, .NET 프레임워크 기반의 객체 지향적 특징을 갖고 다양한 플랫폼에서 자동화 스크립트 작성 및 실행, 시스템 구성 관리 등에 활용된다.
  • 마이크로소프트의 프로그래밍 언어 - 비주얼 베이직
    비주얼 베이직은 1991년 마이크로소프트에서 출시된 GUI 기반 응용 프로그램 개발에 강점을 가진 프로그래밍 언어이며, 윈도우용 응용 프로그램 및 데이터베이스 조작 프로그램 개발에 주로 사용되었고, 2005년 표준 지원이 중단되었다.
  • 베이직 프로그래밍 언어 계열 - 비주얼 베이직
    비주얼 베이직은 1991년 마이크로소프트에서 출시된 GUI 기반 응용 프로그램 개발에 강점을 가진 프로그래밍 언어이며, 윈도우용 응용 프로그램 및 데이터베이스 조작 프로그램 개발에 주로 사용되었고, 2005년 표준 지원이 중단되었다.
  • 베이직 프로그래밍 언어 계열 - 큐베이직
    큐베이직은 GW-BASIC을 대체하기 위해 개발된 퀵베이직 컴파일러 기반의 인터프리터로, MS-DOS, 윈도우, IBM PC DOS 등에서 사용되었으며, 4개의 예제 프로그램과 이스터 에그를 제공한다.
VB스크립트 - [IT 관련 정보]에 관한 문서
기본 정보
유형프로그래밍 언어
개발자마이크로소프트
첫 출시1996년
최신 버전5.8
영향 받은 언어비주얼 베이직
영향을 준 언어윈도우 파워셸
운영체제윈도우
파일 확장자.vbs, .vbe, .wsf, .wsc (.asp, .hta, .htm, .html)
구현윈도우 스크립트 호스트, 액티브 서버 페이지
웹사이트VBScript 마이크로소프트 공식 웹사이트
기타

2. 역사

VB스크립트(VBScript)는 1996년 마이크로소프트 윈도우 스크립트 기술의 일부로 시작되었다.[6] 초기에는 웹 개발자를 대상으로 JScript와 함께 개발되었으며, 2년여 만에 버전 1.0에서 2.0으로 발전했다. 이 과정에서 윈도우 시스템 관리자들의 지원을 받으며 배치 언어보다 강력한 자동화 도구로 자리 잡았다.[6]

1996년 12월, 인터넷 정보 서비스(Internet Information Server) 3.0에 구현된 액티브 서버 페이지(Active Server Pages)의 표준 언어로 채택되면서 서버 측 스크립트 언어로서의 지위도 확고해졌다.

버전 5.0에서는 정규 표현식, 클래스, ''With'' 문 등의 새로운 기능이 추가되어 기능이 향상되었다.[8] 버전 5.5에서는 ''정규 표현식'' 클래스에 ''SubMatches''[10]가 추가되어 스크립트 작성자가 표현식의 그룹 내 텍스트를 캡처할 수 있게 되었다.

그러나 2000년대 초, 마이크로소프트는 .NET영어 전략을 수립하면서 2002년에 출시된 ASP.NET으로 대체되었고, 그 기술 언어도 C#이나 VB.NET(Visual Basic .NET) 등이 되었다. 또한, 운영 체제의 범용 스크립트 환경에 대해서도 WSH에서 Windows PowerShell영어로 이행한다고 발표했다.

2006년 현재의 전망으로는, PHP로 대표되는 오픈 소스 서버 측 스크립트 언어가 서서히 IIS 상에서도 안정적인 동작을 기대할 수 있게 되었고, 서버 측 스크립트 언어로서의 VBScript도 일부의 뿌리 깊은 인기를 제외하면 거의 그 역할을 마치고, 완만하게 쇠퇴해 갈 것으로 보인다.

2013년에 출시된 인터넷 익스플로러 11에서는 보안 및 호환성 설정에 따라 VBScript를 실행하지 않게 되었으며,[22] 윈도우 10은 2019년 7월 9일부터, 윈도우 8.1 이전 버전은 2019년 8월 13일부터 기본적으로 비활성화되었다.[23] 또한, 윈도우 10에 탑재된 마이크로소프트 엣지에서는 VBScript가 동작하지 않는다.

마이크로소프트2023년 10월, 윈도우 클라이언트에서 VBScript를 더 이상 사용하지 않겠다고 발표했다. 윈도우의 향후 릴리스에서는 FOD(Features on Demand) 기능으로 제공될 예정이며, 최종적으로 제거될 것이다.

2. 1. 초기 개발 및 도입 (1996년)

VB스크립트는 1996년에 마이크로소프트 윈도우 스크립트 기술의 일부로 출시되었다.[6] 이 기술은 JScript와 함께 초기에 웹 개발자를 대상으로 하였다. VB스크립트는 2년이 조금 넘는 기간 동안 버전 1.0에서 2.0으로 발전했으며, 그 기간 동안 1980년대 초에 처음 개발된 배치 언어보다 더 강력한 자동화 도구를 찾는 윈도우 시스템 관리자들의 지원을 받았다.[6] 1996년 8월 1일, 인터넷 익스플로러가 VB스크립트를 포함한 기능과 함께 출시되었다.[7]

1996년 8월, VBScript영어는 WWW의 클라이언트 스크립트 언어로서 Internet Explorer영어 3.0에 구현되었다. 당시 넷스케이프 커뮤니케이션즈와 마이크로소프트는 브라우저 전쟁이라고 불리는 웹 브라우저 점유율과 웹 표준을 둘러싼 기술 경쟁을 벌였고, 1996년 3월에 Netscape Navigator영어 2.0에 구현된 JavaScript영어에 대항하기 위해, JavaScript영어 호환 스크립트 언어 JScript영어와 함께 구현되었다.

2. 2. 시스템 관리 영역으로의 확장

VBScript는 1980년대 초에 개발된 배치 언어보다 더 강력한 자동화 도구를 찾는 윈도우 시스템 관리자들의 지원을 받았다.[6] VBScript는 버전 1.0에서 2.0으로 발전하면서 시스템 관리 영역으로 확장되었다. 1996년 8월 1일, 인터넷 익스플로러가 VBScript를 포함한 기능과 함께 출시되었다.[7]

2. 3. 기능 확장 (5.0 버전)

정규 표현식, 클래스, ''With'' 문[8]이 추가되어 스크립트 기능이 향상되었다. 다른 스크립트 실행 중에 구축된 스크립트 명령을 평가하고 실행하는 ''Eval'', ''Execute'', ''ExecuteGlobal'' 함수, GetRef를 통한 함수 포인터 시스템,[9] 분산 COM(DCOM) 지원도 추가되었다.

2. 4. SubMatches 추가 (5.5 버전)

VBScript 버전 5.5에서는 ''정규 표현식'' 클래스에 ''SubMatches''[10] 기능이 추가되어, 스크립트 작성자가 표현식의 그룹 내 텍스트를 캡처할 수 있게 되었다. 이 기능은 JScript에서 이미 제공하고 있었다.

2. 5. .NET 프레임워크 출현 이후

.NET 프레임워크의 출현으로, 마이크로소프트는 웹 개발 지원을 ASP.NET으로 전환하고, VBScript 엔진의 추가 개발은 중단되었다.[11] 이후 VBScript는 버그 수정 및 보안 향상만 유지 보수 팀에 의해 지원되고 있다. 마이크로소프트는 윈도우 시스템 관리자에게 VBScript가 더 이상 사용되지 않으며 결국 윈도우에서 제거될 예정이므로 윈도우 파워쉘로 마이그레이션할 것을 권장한다.

2. 6. Windows PowerShell로의 전환 권장

.NET 프레임워크의 출현으로 스크립트 팀은 웹 개발을 위해 ASP.NET 내에서 VBScript에 대한 미래 지원을 구현하기로 결정했고,[11] 따라서 VBScript 엔진의 새로운 버전은 개발되지 않을 예정이었다. 이후부터는 버그 수정 및 보안 향상을 담당하는 마이크로소프트의 "유지 관리 엔지니어링 팀"이 지원할 예정이다. 마이크로소프트는 윈도우 시스템 관리자의 경우, VBScript가 더 이상 사용되지 않고 결국 윈도우에서 제거될 예정이므로 윈도우 파워쉘로 마이그레이션할 것을 권장한다.

2. 7. 지원 중단 및 제거 예정

VBScript는 더 이상 사용되지 않으며, 향후 윈도우에서 제거될 예정이다. 2013년에 출시된 Internet Explorer 11에서는 보안 및 호환성 설정에 따라 VBScript를 실행하지 않게 되었으며[22], 2019년부터 Internet Explorer 11 및 Microsoft Edge에서 기본적으로 비활성화되었다.[23] 또한, Windows 10에 탑재된 Microsoft Edge에서는 VBScript가 동작하지 않는다. 2023년 10월, 마이크로소프트는 Windows 클라이언트에서 VBScript 사용 중단을 공식 발표했다.

3. 활용 환경

VB스크립트는 Visual Basic의 구문을 모방하여 만들어진 Windows의 스크립트 언어이며, Active Scripting의 스크립트 엔진 형태로 구현되어 있다. 런타임으로는 ASPWSH가 있다. 주요 용도는 다음과 같다.


  • Active Server Pages(ASP) 등을 사용한 서버 측 스크립팅 처리
  • Windows Script Host(WSH)를 이용한 Windows에서의 네이티브 스크립트
  • Internet Explorer를 사용한 클라이언트 측 스크립팅 처리
  • HTML Applications(HTA) 애플리케이션


하지만 WWW 클라이언트 스크립트로는 Windows 버전의 Internet Explorer에서만 동작했기 때문에 거의 사용되지 않았다. 2013년에 출시된 Internet Explorer 11에서는 보안 및 호환성 설정에 따라 VB스크립트 실행이 중단되었으며[22], 윈도우 10은 2019년 7월 9일부터, 윈도우 8.1 이전 버전은 2019년 8월 13일부터 기본적으로 비활성화되었다[23]윈도우 10에 탑재된 Microsoft Edge에서는 VB스크립트가 동작하지 않는다.

VB스크립트는 HTA나 ASP, HTML 내에 포함되는 경우가 많지만, 단독 스크립트 파일로 존재하는 경우, 확장자는 일반적으로 `.vbs`를 사용한다.

다음은 Microsoft Windows NT 시스템의 WMI(Windows Management Instrumentation) 서비스를 이용하여 메모장 프로그램의 프로세스(notepad.exe)를 종료시키는 예제이다.

```vb

Option Explicit ' 변수 선언 요구

On Error Resume Next ' 오류가 발생해도 속행

Const ProcessToKill = "notepad.exe" ' 종료할 프로세스 명 지정 (notepad.exe)

Dim oWMI, oQuery, oProc, iCount ' 변수 선언

Set oWMI = GetObject("winmgmts:") ' 로컬 컴퓨터의 WMI 서비스에 접속하여 WMI 서비스 개체 취득

If Not IsObject(oWMI) Or oWMI Is Nothing Then ' WMI 서비스 개체를 얻는 데에 실패했다면

' 오류 메시지 출력

MsgBox "WMI 서비스가 실행 중이 아닙니다." & vbCrLf & vbCrLf & _

"이 스크립트는 윈도우 NT 이상, WMI 서비스가 실행 중인 컴퓨터에서만 실행 가능합니다.", vbCritical

' 종료 코드 1번으로 스크립트 실행 종료

WScript.Quit 1

End If

' WMI 서비스에 쿼리를 보내 ProcessToKill 상수에 지정된 프로세스와 같은 프로세스 개체를 검색함

Set oQuery = oWMI.ExecQuery("SELECT * FROM win32_process WHERE Name = '" & ProcessToKill & "'")

iCount = 0 ' 프로세스 카운트 변수 초기화

' 쿼리 내에 검색된 각각의 모든 개체(프로세스 개체) oProc 들에 대해

For Each oProc In oQuery

oProc.Terminate ' 프로세스를 강제로 종료

iCount = iCount + 1 ' 프로세스 카운트를 하나 증가

Next ' oProc

' 결과를 사용자에게 출력

If iCount > 0 Then

WScript.Echo "총 " & iCount & " 개의 메모장 프로세스가 종료되었습니다."

Else

WScript.Echo "컴퓨터에 실행 중인 메모장 프로세스를 발견할 수 없었습니다."

End If

' 개체의 인스턴스를 해제함

Set oProc = Nothing

Set oQuery = Nothing

Set oWMI = Nothing

3. 1. 클라이언트 측 웹 (Client-side web)

인터넷 익스플로러에서 VB스크립트는 자바스크립트와 유사한 기능을 수행했다. HTML 내 VB스크립트 코드는 페이지의 문서 객체 모델(DOM)과 상호작용하여 HTML만으로는 불가능한 기능을 구현했다. 그러나 크롬, 파이어폭스, 오페라 등 다른 웹 브라우저에서는 VB스크립트를 지원하지 않았다. 따라서 클라이언트 측 스크립팅과 브라우저 호환성을 위해서는 일반적으로 자바스크립트가 사용되었다.

Windows 버전의 인터넷 익스플로러에서만 VB스크립트가 동작했기 때문에, WWW 클라이언트 스크립트로서는 2005년경에도 거의 사용되지 않았다. 2013년 출시된 Internet Explorer 11에서는 보안 및 호환성 설정에 따라 VB스크립트 실행이 중단되었으며,[22] 윈도우 10은 2019년 7월 9일부터, 윈도우 8.1 이전 버전은 2019년 8월 13일부터 기본적으로 비활성화되었다.[23] 윈도우 10에 탑재된 마이크로소프트 엣지에서는 VB스크립트가 동작하지 않는다.

3. 2. 액티브 서버 페이지 (Active Server Page)

VBScript는 액티브 서버 페이지(ASP)를 통해 서버 측 웹 페이지 기능을 위해 사용된다. ASP 엔진은 VBScript 스크립트를 실행하기 위해 `vbscript.dll`을 호출한다.[22][23] ASP 페이지에 포함된 VBScript는 `<%` 및 `%>` 컨텍스트 스위치 내에 포함된다. 다음 예제는 현재 시간을 24시간 형식으로 표시한다.

```aspx-vb

<% Option Explicit %>







VBScript 예제





<%

' Now() 함수에서 현재 시간 가져오기.

' 컨텍스트 스위치 (<%) 뒤에 오는 '=' 기호는

' Response 개체의 Write() 메서드 호출의 약식 표현이다.

Dim timeValue : timeValue = Now %>

현재 시간은 24시간 형식으로

<%=Hour(timeValue)%>:<%=Minute(timeValue)%>:<%=Second(timeValue)%>.







```

1996년 12월, Internet Information Server 3.0에 구현된 액티브 서버 페이지(ASP)의 표준 언어로 VBScript가 채택되었다. ASP는 프로그램 코드 속에 HTML 코드를 삽입하는 방식이 아닌, HTML 코드 속에 프로그램 코드를 삽입하는 방식을 채택하여, 익숙해지기 쉽다는 장점으로 성공을 거두었다. 동시에 표준 언어로서 VBScript의 지위도 확고해졌다.

마이크로소프트는 2000년대 초부터 ActiveX를 대체하는 전략으로 .NET 전략을 수립했으며, ASP도 2002년에 출시된 ASP.NET으로 대체되었고, 그 기술 언어도 C#이나 Visual Basic .NET 등이 되었다.

3. 3. Windows 스크립트 호스트 (Windows Script Host)

VBScript는 Windows 스크립트 호스트 (WSH)를 통해 운영 체제에서 직접 실행할 수 있다. 일반적으로 파일 확장자가 `.vbs`인 스크립트 파일은 그래픽 사용자 인터페이스 (GUI)를 위해 Wscript.exe 또는 명령줄 인터페이스 (CLI)를 위해 Cscript.exe를 통해 실행할 수 있다.[22]

3. 4. 윈도우 스크립트 파일 (Windows Script File)

윈도우 스크립트 파일(WSF)은 XML 스타일로, 여러 개의 VBS 파일을 포함할 수 있으며, 따라서 모듈 방식으로 재사용할 수 있는 VBScript 코드 라이브러리이다. 이 파일들은 확장자 .wsf를 가지며, .vbs 파일과 마찬가지로 wscript.exe 또는 cscript.exe를 사용하여 실행할 수 있다.[19]

3. 5. HTML 응용 프로그램 (HTML Application)

HTA는 HTML 형식을 따르며, 파일 내의 HTML은 사용자 인터페이스를 생성하는 데 사용되며, VB스크립트와 같은 스크립트 언어는 프로그램 로직에 사용된다. 파일 확장자는 `.hta`이며, `mshta.exe`를 사용하여 실행할 수 있다.[22]

3. 6. Windows 스크립트 구성 요소 (Windows Script Component)

VB스크립트는 다른 COM 지원 애플리케이션에서 호출할 수 있는 ActiveX 지원 스크립트 클래스인 Windows Script Component에서도 사용할 수 있다.[12] 이러한 파일은 .wsc 확장자를 가진다.

4. 기능

VB스크립트는 OLE 서버의 연결 역할을 하는 스크립트 언어라는 개념으로 설계되었다. 윈도우의 범용 스크립트 언어로 설명되었지만, .NET 전략으로 전환된 현재는 OLE (ActiveX)용 스크립트 언어라고 하는 것이 더 적절하다.

OLE 설계를 따르고 있어, VB스크립트는 언어 자체에서 파일 입출력조차 지원하지 않는다.

또한, 동적 타이핑을 채택하고 있다는 점도 Visual Basic에서 파생된 언어로서 특이한 점이다.

Windows 스크립트 호스트(WSH)를 통해 호스팅될 때, VBScript는 Visual Basic 6.0에서는 사용할 수 없지만 스크립팅 언어에서 공통적으로 사용되는 다양한 기능을 제공한다. 이러한 기능은 다음과 같다.[13]

기능설명
명명된 및 명명되지 않은 명령줄 인수스크립트 실행 시 인수를 전달하여 스크립트 동작을 제어할 수 있다.
Stdin 및 stdout (리디렉션 가능)표준 입력 및 표준 출력을 사용하여 데이터를 입력받거나 출력할 수 있으며, 리디렉션을 통해 파일이나 다른 프로그램과 연결할 수 있다.
콘솔에 쓰고 리디렉션할 수 없는 WSH.Echo콘솔에 메시지를 출력하는 기능으로, 리디렉션할 수는 없다.
DOS 배치 파일 또는 스크립트 파일을 호출한 프로세스에서 테스트할 수 있는 WSH.ExitCode스크립트 실행 후 종료 코드를 반환하여, 스크립트의 성공 또는 실패 여부를 확인할 수 있다.
네트워크 프린터네트워크 프린터를 제어하고 관리할 수 있다.
네트워크 공유네트워크 공유 폴더에 접근하고 관리할 수 있다.
특별 폴더(예: 바탕 화면, 즐겨찾기, 내 문서 등)바탕 화면, 즐겨찾기, 내 문서 등과 같은 특별 폴더의 경로를 얻어와 사용할 수 있다.
그룹 멤버십과 같은 네트워크 사용자 정보네트워크 사용자의 그룹 멤버십 등과 같은 정보를 얻어올 수 있다.
런타임에 정의된 텍스트의 런타임 실행 방법: Eval 및 Execute런타임에 텍스트 형태의 코드를 실행할 수 있는 Eval 및 Execute 함수를 제공한다.
원격 컴퓨터에서 스크립트를 실행하는 방법원격 컴퓨터에서 스크립트를 실행할 수 있는 기능을 제공한다.
Windows Management Instrumentation (WMI)WMI를 사용하여 시스템 정보를 얻거나 관리 작업을 수행할 수 있다.
널리 알려진 언어를 사용하여 다른 응용 프로그램에 VBScript 엔진을 포함하는 기능다른 응용 프로그램에 VBScript 엔진을 포함하여 스크립팅 기능을 확장할 수 있다.



명령줄 실행기인 CScript는 다음 옵션을 제공한다.

옵션설명
대화형 또는 배치 모드스크립트를 대화형 모드 또는 배치 모드로 실행할 수 있다.
명령줄에서 디버그 모드 호출명령줄에서 디버그 모드를 활성화하여 스크립트를 디버깅할 수 있다.
줄 번호를 포함한 오류 보고오류 발생 시 줄 번호를 포함한 오류 보고를 제공하여 디버깅을 용이하게 한다.



파일 시스템 관리, 파일 수정 및 스트리밍 텍스트 작업은 스크립팅 런타임 라이브러리 `scrrun.dll`로 구현된다. 이 라이브러리는 FileSystemObject, File 및 TextStream과 같은 객체를 제공한다.[14]

이진 파일 및 메모리 I/O는 "ADODB.Stream" 클래스에서 제공하며, 문자열 빌더 및 바이트 배열과 문자열 간의 상호 변환에도 사용할 수 있다. 데이터베이스 접근은 ActiveX 데이터 개체(ADO)를 통해 가능하며, GetObject() 함수를 사용하여 IIS 메타베이스를 조작할 수 있다. XML 파일 및 스키마는 Microsoft XML 라이브러리 응용 프로그래밍 인터페이스로 조작할 수 있으며, XMLHTTP 및 ServerXMLHTTP 객체를 통해 웹에서 콘텐츠를 검색하는 데에도 사용할 수 있다.[14]

ActiveX 기술을 통해 기능을 추가할 수도 있다. 보안 문제로 인해 많은 ActiveX 컨트롤이 Internet Explorer에서 블랙리스트에 올라 있으며, Microsoft는 취약한 코드를 비활성화하기 위해 월별 Windows 보안 업데이트를 통해 킬비트를 배포한다.[14][15]

프로그래머는 COM(ActiveX) 모듈을 통해 확장성을 활용하여 스크립트 호스트 및 VBScript에 필요한 기능을 추가할 수 있다.

4. 1. 언어 특징 (Language Features)

VBScript 언어는 클래식 Visual Basic을 모델로 한다.[13] 주목할 만한 기능은 다음과 같다.

  • 프로시저: 코드를 더 작은 모듈로 분리하는 주요 구성 요소이다. 결과를 반환할 수 있는 함수와 반환할 수 없는 서브루틴으로 구분된다. 매개변수는 위치 기반이며 값 또는 참조로 전달될 수 있다.
  • 제어 구조: 일반적인 반복 및 조건부 Do 루프, If-Then-Else 문 및 Case 문이 포함되며, ElseIf 및 중첩된 제어 구조와 같은 보다 복잡한 변형도 있다.
  • 상수: 코딩 시 기억을 돕고 가독성을 높이기 위해 논리 값에 대한 True 및 False, MsgBox|메시지 박스영어 코드에 대한 vbOKCancel 및 vbYesNo, 색상 값에 대한 vbBlack 및 vbYellow, 캐리지 리턴 문자에 대한 vbCR 등과 같은 많은 상수가 있다.
  • 변수: 기본적으로 "Variant" 형식을 갖지만 변환 함수(CInt, CDate 등)를 사용하여 특정 유형(정수, 날짜 등)을 강제하는 것이 가능하다(때로는 필요하다).
  • 사용자 상호 작용: 메시지 및 입력을 위한 간단한 대화 상자 형식을 제공하는 MsgBox|메시지 박스영어 및 InputBox|인풋 박스영어 함수를 통해 제공된다. 두 함수 모두 프롬프트 메시지를 표시하며, 전자는 표준 응답을 반환하고 후자는 사용자가 제공한 텍스트 또는 숫자 값을 반환한다.
  • 이름: 대소문자를 구분하지 않는다. 그러나 일관성을 유지하고 신중하게 대문자를 사용하는 것이 VBScript 스타일의 모범 사례로 간주된다.

4. 2. VBScript 기능 (VBScript Functionalities)

Windows 스크립트 호스트(WSH)를 통해 호스팅될 때, VBScript는 Visual Basic 6.0에서는 사용할 수 없지만 스크립팅 언어에서 공통적으로 사용되는 다양한 기능을 제공한다. 이러한 기능은 다음과 같다.

기능설명
명명된 및 명명되지 않은 명령줄 인수스크립트 실행 시 인수를 전달하여 스크립트 동작을 제어할 수 있다.
Stdin 및 stdout (리디렉션 가능)표준 입력 및 표준 출력을 사용하여 데이터를 입력받거나 출력할 수 있으며, 리디렉션을 통해 파일이나 다른 프로그램과 연결할 수 있다.
콘솔에 쓰고 리디렉션할 수 없는 WSH.Echo콘솔에 메시지를 출력하는 기능으로, 리디렉션할 수는 없다.
DOS 배치 파일 또는 스크립트 파일을 호출한 프로세스에서 테스트할 수 있는 WSH.ExitCode스크립트 실행 후 종료 코드를 반환하여, 스크립트의 성공 또는 실패 여부를 확인할 수 있다.
네트워크 프린터네트워크 프린터를 제어하고 관리할 수 있다.
네트워크 공유네트워크 공유 폴더에 접근하고 관리할 수 있다.
특별 폴더(예: 바탕 화면, 즐겨찾기, 내 문서 등)바탕 화면, 즐겨찾기, 내 문서 등과 같은 특별 폴더의 경로를 얻어와 사용할 수 있다.
그룹 멤버십과 같은 네트워크 사용자 정보네트워크 사용자의 그룹 멤버십 등과 같은 정보를 얻어올 수 있다.
런타임에 정의된 텍스트의 런타임 실행 방법: Eval 및 Execute런타임에 텍스트 형태의 코드를 실행할 수 있는 Eval 및 Execute 함수를 제공한다.
원격 컴퓨터에서 스크립트를 실행하는 방법원격 컴퓨터에서 스크립트를 실행할 수 있는 기능을 제공한다.
Windows Management Instrumentation (WMI)WMI를 사용하여 시스템 정보를 얻거나 관리 작업을 수행할 수 있다.
널리 알려진 언어를 사용하여 다른 응용 프로그램에 VBScript 엔진을 포함하는 기능다른 응용 프로그램에 VBScript 엔진을 포함하여 스크립팅 기능을 확장할 수 있다.



명령줄 실행기인 CScript는 다음 옵션을 제공한다.

옵션설명
대화형 또는 배치 모드스크립트를 대화형 모드 또는 배치 모드로 실행할 수 있다.
명령줄에서 디버그 모드 호출명령줄에서 디버그 모드를 활성화하여 스크립트를 디버깅할 수 있다.
줄 번호를 포함한 오류 보고오류 발생 시 줄 번호를 포함한 오류 보고를 제공하여 디버깅을 용이하게 한다.


4. 3. 추가 기능 (Additional Functionality)

파일 시스템 관리, 파일 수정 및 스트리밍 텍스트 작업은 스크립팅 런타임 라이브러리 `scrrun.dll`로 구현된다. 이 라이브러리는 프로그래머에게 Windows 파일 시스템을 보여주는 FileSystemObject, File 및 TextStream과 같은 객체를 제공한다.[14]

이진 파일 및 메모리 I/O는 "ADODB.Stream" 클래스에서 제공하며, 문자열 빌더(과도한 문자열 연결을 피하기 위함) 및 바이트 배열과 문자열 간의 상호 변환에도 사용할 수 있다. 데이터베이스 접근은 ActiveX 데이터 개체(ADO)를 통해 가능하며, 충분한 권한이 있는 경우 GetObject() 함수를 사용하여 IIS 메타베이스를 조작할 수 있다(사이트 및 가상 디렉터리를 생성하고 삭제하는 데 유용함). XML 파일 및 스키마는 Microsoft XML 라이브러리 응용 프로그래밍 인터페이스로 조작할 수 있으며, 이는 XMLHTTP 및 ServerXMLHTTP 객체를 통해 월드 와이드 웹에서 콘텐츠를 검색하는 데에도 사용할 수 있다(각각 클래스 문자열 "MSXML2.XMLHTTP.6.0" 및 "MSXML2.ServerXMLHTTP.6.0").[14]

ActiveX 기술을 통해 기능을 추가할 수도 있다. 보안 문제로 인해 많은 ActiveX 컨트롤이 Microsoft의 Internet Explorer 프로세스에서 블랙리스트에 올라 있으며, Microsoft는 취약한 Microsoft 및 타사 코드를 비활성화하기 위해 월별 Windows 보안 업데이트를 통해 킬비트를 배포한다.[14][15]

프로그래머는 COM(ActiveX) 모듈을 통해 확장성을 활용하여 스크립트 호스트 및 VBScript에 필요한 기능이나 원하는 기능을 특별히 갖출 수 있다. 예를 들어, "VTool" 구성 요소는 여러 개의 대화 상자 창, 이진 파일 액세스 및 기타 기능을 추가한다.[16]

5. 개발 도구

마이크로소프트는 VBScript용 통합 개발 환경(IDE)을 정기적으로 제공하지는 않지만, 마이크로소프트 스크립트 편집기는 특정 버전의 마이크로소프트 오피스에 번들로 제공되었다. 마이크로소프트 스크립트 디버거는 수년 동안 업데이트되지 않았지만, 현재 윈도우 버전에서도 여전히 사용될 수 있다. 이를 통해 사용자는 VBScript 코드에 중단점을 설정할 수 있지만 사용자 인터페이스는 매우 조잡하다.[17][18] 타사에서 VBScript 디버거를 제공하며, 많은 텍스트 편집기에서 해당 언어에 대한 구문 강조 기능을 제공한다.

실행 중에 오류가 발생하면 스크립트 호스트는 오류 유형과 오류가 발생한 줄 번호를 나타내는 메시지를 표시한다.

5. 1. 마이크로소프트 스크립트 편집기

마이크로소프트는 VBScript용 통합 개발 환경(IDE)을 정기적으로 제공하지는 않지만, 마이크로소프트 오피스의 특정 버전에 마이크로소프트 스크립트 편집기가 번들로 제공되었다.

5. 2. 마이크로소프트 스크립트 디버거

마이크로소프트 스크립트 디버거는 수년 동안 업데이트되지 않았지만, 현재 윈도우 버전에서도 여전히 사용될 수 있다. 이를 통해 사용자는 VBScript 코드에 중단점을 설정할 수 있지만 사용자 인터페이스는 매우 조잡하다.[17][18]

5. 3. 타사 개발 도구

타사에서 VBScript 디버거를 제공하며,[17][18] 많은 텍스트 편집기에서 해당 언어에 대한 구문 강조 기능을 제공한다.

6. 다른 언어와의 비교

VB스크립트는 Visual Basic과 구문이 매우 유사하여 서로 배우기 쉽지만, Visual Basic이나 Visual Basic for Applications와 완전히 호환되지는 않아 그대로 사용할 수 없는 경우가 많다.[19]

VB스크립트와 JScript는 실행 환경은 같지만, 언어 설계 철학은 매우 다르다.

6. 1. Visual Basic, Visual Basic for Applications (VBA)와의 비교

VB스크립트는 Visual Basic과 매우 유사한 구문을 가지고 있어 상호 학습이 용이하지만, 다음과 같은 차이점 때문에 Visual Basic 또는 Visual Basic for Applications와의 호환성이 낮아 그대로 사용할 수 없는 경우가 많다.[19]

  • 동적 타이핑
  • 많은 내장 함수나 프로시저가 없음
  • 모듈이 없음

6. 2. JScript와의 비교

VBScript와 JScript는 동일한 런타임을 사용하지만, 언어 설계 철학은 크게 다르다. 주요 차이점은 다음과 같다.

  • 내장 GUI 함수: VBScript는 `MsgBox`, `InputBox`와 같은 내장 GUI 함수를 제공하여 간단한 사용자 인터페이스(UI)를 쉽게 만들 수 있다. 반면 JScript는 이러한 함수가 없어, `WScript.Echo`로 `MsgBox`를 대체하거나 VBScript의 `InputBox` 함수를 호출해야 한다.
  • 객체 지향 프로그래밍 방식: VBScript는 클래스 기반 객체 지향 언어인 반면, JScript는 프로토타입 기반 객체 지향 언어이다.
  • 프로그래밍 언어 기능: JScript는 익명 함수, 정적 스코프의 클로저 등 VBScript보다 더 강력한 기능을 제공한다.

7. 코드 예제

VBScript 코드 예제로는 WMI를 이용하여 메모장 프로세스를 종료하는 예제와 현재 시각을 표시하는 예제가 있다.

WMI를 이용한 프로세스 종료 예제는 다음과 같다.

```vb

Option Explicit

On Error Resume Next

Const ProcessToKill = "notepad.exe"

Dim oWMI, oQuery, oProc, iCount

Set oWMI = GetObject("winmgmts:")

If Not IsObject(oWMI) Or oWMI Is Nothing Then

MsgBox "WMI 서비스가 실행 중이 아닙니다." & vbCrLf & vbCrLf & _

"이 스크립트는 윈도우 NT 이상, WMI 서비스가 실행 중인 컴퓨터에서만 실행 가능합니다.", vbCritical

WScript.Quit 1

End If

Set oQuery = oWMI.ExecQuery("SELECT * FROM win32_process WHERE Name = '" & ProcessToKill & "'")

iCount = 0

For Each oProc In oQuery

oProc.Terminate

iCount = iCount + 1

Next

If iCount > 0 Then

WScript.Echo "총 " & iCount & " 개의 메모장 프로세스가 종료되었습니다."

Else

WScript.Echo "컴퓨터에 실행 중인 메모장 프로세스를 발견할 수 없었습니다."

End If

Set oProc = Nothing

Set oQuery = Nothing

Set oWMI = Nothing

```

현재 시각을 표시하는 예제는 다음과 같다. 아래 코드를 `time.vbs`와 같은 파일로 저장하고 더블 클릭하면 현재 시각을 확인할 수 있다.

```vbscript

MsgBox "현재 시각은 " & Time & " 입니다."

```

HTML에 포함시키는 경우의 표기법은 다음과 같다.

```html











……




7. 1. WMI를 이용한 프로세스 종료 예제 (한국어 문서)

vb

Option Explicit ' 변수 선언 요구

On Error Resume Next ' 오류가 발생해도 속행

Const ProcessToKill = "notepad.exe" ' 종료할 프로세스 명 지정 (notepad.exe)

Dim oWMI, oQuery, oProc, iCount ' 변수 선언

Set oWMI = GetObject("winmgmts:") ' 로컬 컴퓨터의 WMI 서비스에 접속하여 WMI 서비스 개체 취득

If Not IsObject(oWMI) Or oWMI Is Nothing Then ' WMI 서비스 개체를 얻는 데에 실패했다면

' 오류 메시지 출력

MsgBox "WMI 서비스가 실행 중이 아닙니다." & vbCrLf & vbCrLf & _

"이 스크립트는 윈도우 NT 이상, WMI 서비스가 실행 중인 컴퓨터에서만 실행 가능합니다.", vbCritical

' 종료 코드 1번으로 스크립트 실행 종료

WScript.Quit 1

End If

' WMI 서비스에 쿼리를 보내 ProcessToKill 상수에 지정된 프로세스와 같은 프로세스 개체를 검색함

Set oQuery = oWMI.ExecQuery("SELECT * FROM win32_process WHERE Name = '" & ProcessToKill & "'")

iCount = 0 ' 프로세스 카운트 변수 초기화

' 쿼리 내에 검색된 각각의 모든 개체(프로세스 개체) oProc 들에 대해

For Each oProc In oQuery

oProc.Terminate ' 프로세스를 강제로 종료

iCount = iCount + 1 ' 프로세스 카운트를 하나 증가

Next ' oProc

' 결과를 사용자에게 출력

If iCount > 0 Then

WScript.Echo "총 " & iCount & " 개의 메모장 프로세스가 종료되었습니다."

Else

WScript.Echo "컴퓨터에 실행 중인 메모장 프로세스를 발견할 수 없었습니다."

End If

' 개체의 인스턴스를 해제함

Set oProc = Nothing

Set oQuery = Nothing

Set oWMI = Nothing

7. 2. 현재 시각 표시 예제 (일본어 문서)

다음 코드를 적절한 파일(예: time.vbs)로 저장하고 더블 클릭하면 현재 시각을 표시한다.

```vbscript

MsgBox "현재 시각은 " & Time & " 입니다."

```

또한, HTML에 포함시키는 경우, 다음과 같이 표기한다.

```html











……




8. VBScript와 보안

VBScript는 ILOVEYOU 웜과 같은 악성코드를 만드는 데 사용될 수 있으며, 수십억 달러의 피해를 입히기도 했다.[19] 최근 컴퓨터 바이러스는 윈도우 스크립트 호스트(WSH)와 VBScript영어를 조합하여 감염되는 형태가 빈번하게 발생하고 있으며, VBScript영어의 OLE 클라이언트 기능의 강력함은 사용자에게 양날의 검이 되고 있다.

참조

[1] 웹사이트 What is VBScript? http://msdn.microsof[...]
[2] 웹사이트 WSH Version Information http://msdn2.microso[...]
[3] 웹사이트 VBScript Version Information http://msdn.microsof[...]
[4] 웹사이트 Deprecated features in the Windows client - What's new in Windows https://learn.micros[...] 2023-11-07
[5] 웹사이트 VBScript deprecation: Timelines and next steps https://techcommunit[...] 2024-05-28
[6] 문서 86-DOS
[7] 웹사이트 The History of Visual Basic http://www.johnsmile[...]
[8] 웹사이트 Visual Basic Scripting Edition: With Statement http://msdn2.microso[...]
[9] 웹사이트 GetRef Function http://msdn2.microso[...]
[10] 웹사이트 Visual Basic Scripting Edition: SubMatches Collection http://msdn2.microso[...]
[11] 웹사이트 What About VBScript? http://msdn.microsof[...] Microsoft Corporation 2000-07-14
[12] 웹사이트 Introducing Windows Script Components http://msdn2.microso[...]
[13] 웹사이트 VBScript Features http://msdn.microsof[...] 2011-10-24
[14] 웹사이트 How to stop an ActiveX control from running in Internet Explorer http://support.micro[...] Microsoft 2007-08-24
[15] 웹사이트 Microsoft Security Advisory (960715): Update Rollup for ActiveX Kill Bits http://www.microsoft[...] Microsoft 2009-01-17
[16] 웹사이트 VTool script component http://eriedel.info/[...]
[17] 웹사이트 VbsEdit - VBScript Editor with Debugger - VBS Editor http://www.vbsedit.c[...]
[18] 웹사이트 SplineTech VBS Debugger, VBScript Debugger. Debug VBS. http://www.remotedeb[...]
[19] 웹사이트 Script Center https://technet.micr[...]
[20] 웹사이트 Quick Test Professional – Basics of VBScript http://knol.google.c[...]
[21] 웹사이트 Caché for Unstructured Data Analysis http://www.intersyst[...] InterSystems
[22] 웹사이트 インターネット ゾーンにおける Internet Explorer 11 エッジ モードでの VBScript のサポート停止 https://msdn.microso[...] マイクロソフト 2013-11-20
[23] 웹사이트 An update on disabling VBScript in Internet Explorer 11 - Microsoft Edge Blog https://blogs.window[...]
[24] 웹사이트 WSH Version Information http://msdn2.microso[...]
[25] 웹사이트 VBScript Version Information http://msdn.microsof[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com