Tutorial detallado de EBV
VBS obtiene la IP local
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" amp; strComputer amp; "\root \cimv2")
Establezca IPConfigSet = objWMIService.ExecQuery("Seleccione la dirección IP de Win32_NetworkAdapterConfiguration donde IPEnabled=TRUE")
Para cada IPConfig en IPConfigSet
Si no IsNull(IPConfig.IPAddress) Luego
Para cada strAddress en IPConfig.IPAddress
WScript.Echo strAddress
Siguiente
Finalizar si
Siguiente
2 Obtener el nombre de la computadora local
strComputer = "."
Establecer objWMIService = GetObject("winmgmts:\\" amp; strComputer amp; "\root\cimv2")
Establecer colComputers = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
Para cada objComputer en colComputers
Wscript.Echo objComputer.Name
Siguiente
-------------------------- - -------------------------------------------------- --
4 Verifique el paquete de actualización
strComputer = "."
Establezca objWMIService = GetObject("winmgmts:\\" amp; strComputer amp; " \root\cimv2")
Establezca colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
Para cada objOperatingSystem en colOperatingSystems
Wscript.Echo objOperatingSystem .ServicePackMajorVersion y "." objOperatingSystem.ServicePackMinorVersion
Siguiente
----------------------- -------------------------------------------------- -------
>5 Comprobar corrección urgente
strComputer = "."
Establecer objWMIService = GetObject("winmgmts:\\" amp; strComputer amp; "\root\cimv2")
Establezca colQuickFixes = objWMIService.ExecQuery ("Seleccione * de Win32_QuickFixEngineering")
Para cada objQuickFix en colQuickFixes
Wscript.Echo "Descripción: " amp; /p>
Wscript.Echo "ID de corrección urgente: " amp; objQuickFix.HotFixID
Siguiente
-------------- -------------------------------------------------- ---------------
6 Verifique el número de administradores locales
Set objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName
Establezca objGroup = GetObject("WinNT://" & strComputer & "/Administrators,group")
Para cada objUser en objGroup. Miembros
Wscript.Echo objUser.Name
Siguiente
--------------------- ----- --------------------------------------------- ----- ----------
Sistema de disco 7
strComputer = "."
Establecer objWMIService = GetObject(" winmgmts:\\" amp; strComputer amp; "\root\cimv2")
Establezca colDisks = objWMIService.ExecQuery("Seleccione * de Win32_LogicalDisk donde DriveType = 3")
Para Cada objDisk en colDisks
Wscript.Echo "Unidad de disco: "amp; objDisk.DeviceID amp " -- " objDisk.FileSystem
Siguiente
----- --------------------------------------------- ----- -----------------------
8 Compruebe si el inicio de sesión automático está habilitado
Const HKEY_LOCAL_MAC
HINE = amp; H80000002
strComputer = "."
Establecer objReg=GetObject("winmgmts:\\" amp; strComputer amp; "\root\default: StdRegProv")
strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\WinLogon"
strValueName = "AutoAdminLogon"
objReg.GetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, dwValue
Si dwValue = 1 Entonces
Wscript.Echo "El inicio de sesión automático está habilitado".
De lo contrario
Wscript.Echo "El inicio de sesión automático está habilitado". deshabilitado."
Finalizar si
------------------------------- --- ----------------------------------------------- ---
9 Desactivar el inicio de sesión automático
Const HKEY_LOCAL_MACHINE = amp H80000002
strComputer = "." GetObject("winmgmts: \\" amp; strComputer amp; "\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\WinLogon"
strValueName = "AutoAdminLogon"
dwValue = 0
oReg.SetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, dwValue
----------- ----- --------------------------------------------- ----- --------------
10 Comprobar si el invitado está deshabilitado
Establecer objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName
Establecer objUser = GetObject("WinNT://" & strComputer & "/Guest")
Si objUser.AccountDisabled Entonces
Wscript.Echo "La cuenta de invitado está deshabilitada".
Else
Wscript.Echo "El Gue".
La primera cuenta está habilitada."
End If
---------------------- -------------------------------------------------- --
11 Cerrar invitado
Establecer objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName
Establecer objUser = GetObject("WinNT://" & strComputer & "/Guest")
Si objUser.AccountDisabled Entonces
Wscript.Echo "La cuenta de Invitado ya está deshabilitada. "
Else
objUser.AccountDisabled = True
objUser.SetInfo
Wscript.Echo "La cuenta de invitado ha sido deshabilitada ". p>
Finalizar si
--------------------------------- -- ------------------------------------------------ p>
12 Recuperar objeto *** local
strComputer = "."
Establecer objWMIService = GetObject("winmgmts:\\" amp; strComputer amp; "\root \cimv2 ")
Establecer colShares = objWMIService.ExecQuery("Select * from Win32_Share")
Para cada objShare en colShares
Wscript.Echo "Nombre: " amp ; objShare.Name
Wscript.Echo "Ruta: " & objShare.Path
Wscript.Echo "Tipo: " & objShare.Type
Siguiente
------------------------------------------- ----- -------------------------------------
13 Script para recuperar una carpeta Vale la pena aprender a descargar el archivo .txt
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colFiles = objWMIService.ExecQuery ("SELECT * FROM CIM_DataFile DONDE Ruta = '\\Documentos y configuraciones\\Administrador\\Escritorio\\' Y Dr.
ive = 'E:' AND Extension = 'txt'")
Wscript.Echo "Número de archivos .txt encontrados: " & colFiles.Count
para cada aa en colFiles
NL=NL amp; vbcrlf amp; aa.name
siguiente
Wscript.Echo NL
------ - -------------------------------------------------- -------------------------
14 ¿Cómo muestro un cuadro de diálogo para seleccionar archivos al usuario?
Pregunta:
Hola, experto en secuencias de comandos. ¿Hay alguna forma de utilizar una secuencia de comandos para mostrar un cuadro de diálogo para que el usuario seleccione un archivo?
-- BF
Respuesta:
Hola, BF. Si estás usando Windows 2000, no conocemos una manera de hacer esto, al menos no una integrada en el sistema operativo. /p >
Pero si está utilizando Windows XP, la situación es diferente. En Windows XP,
Puede utilizar el objeto "UserAccounts.CommonDialog" para mostrar un cuadro de diálogo estándar "Abrir archivo". el cuadro user. Puede utilizar un script similar al siguiente código:
Set objDialog = CreateObject("UserAccounts.CommonDialog")
objDialog.Filter = "All Files|* .*" objDialog.InitialDir = "C:\" intResult = objDialog.ShowOpen
Si intResult = 0 Entonces Wscript.Quit De lo contrario Wscript.Echo objDialog.FileName End If
Esto es un pequeño script, así que vamos a explicarlo línea por línea. Primero creamos una referencia de objeto al objeto UserAccounts.CommonDialog
(llamado "objDialog"). cuadro de diálogo. files,
Entonces configuramos el filtro de esta manera:
objDialog.Filter = "All Files|*.*"
Supongamos que solo queremos Para mostrar archivos de texto, ¿qué debemos hacer? En este caso usaremos el siguiente filtro:
objDialog.Filter = "Text Files|*.txt"
Es posible que puedas ver cómo funciona esto: proporcionamos una descripción para el tipo de archivo (Archivos de texto), luego inserte un delimitador de barra vertical (|) y finalmente use un carácter comodín estándar para indicar todos los archivos .txt (*.txt). ¿Quiere mostrar archivos .txt de forma predeterminada y luego darle al usuario la opción de ver todos los archivos?
Entonces puedes usar el siguiente código:
objDialog.Filter = "Text Files|*.txt|All Files|*.*"
Dale Pruébalo, verás lo que queremos decir.
Luego, especificamos la carpeta predeterminada. De forma predeterminada, queremos que el cuadro de diálogo muestre los archivos ubicados en la carpeta raíz de la unidad C.
Así que configuramos la propiedad "InitialDir" de esta manera:
objDialog.InitialDir = " C: \"
¿Quieres mostrar archivos en la carpeta C:\Windows? Luego puedes usar el siguiente código:
objDialog.InitialDir = "C:\Windows"
No te preocupes: este es un cuadro de diálogo de apertura de archivo real, por lo que puedes hacer clic en clic y puede parar en cualquier momento.
Sólo porque comiences en C:\Windows no significa que solo puedas abrir archivos en esa carpeta.
Finalmente, mostramos el diálogo usando esta línea de código:
intResult = objDialog.ShowOpen
Ahora, simplemente nos sentamos y esperamos a que el usuario seleccione un archivo y haga clic en Aceptar (o espere a que el usuario haga clic en Cancelar). Si el usuario hace clic en Cancelar,
la variable intResult se establecerá en 0. En nuestro script verificamos el valor de intResult y si es 0,
Solo necesitaremos usar Wscript.Quit para finalizar este script.
Pero ¿qué pasa si el usuario realmente selecciona el archivo y hace clic en Aceptar? En este caso, intResult se establecerá en -1 y la propiedad 'FileDialog' se establecerá en la ruta del archivo seleccionado. Nuestro script solo repite el nombre de la ruta, lo que significa que obtendremos un resultado similar a:
C:\WINDOWS\Prairie Wind.bmp
No hace falta decir que no se limita a hacer eco únicamente. rutas de archivos. De hecho, puede usar WMI, FileSystemObject o alguna otra tecnología para vincular el archivo y luego realizar operaciones en él, como eliminar, copiar, comprimir o recuperar propiedades del archivo; prácticamente lo que puede hacer con el archivo se puede ejecutar en él.
Pero pase lo que pase, es necesario utilizar un script.
Por cierto, con este método, solo puedes seleccionar un archivo a la vez, no varios archivos mientras mantienes presionada la tecla "Ctrl". Hay una manera de seleccionar varios archivos,
al menos en una computadora XP, pero tendremos que guardarla para una columna futura.
------------------------------------------- ----- -------------------------------------
15 ¿Cómo puedo determinar si un proceso está bajo qué cuenta se está ejecutando?
Pregunta:
¡Hola, chico del scripting! Tengo un script que devuelve información sobre todos los procesos que se ejecutan en la computadora.
Es solo que no sé cómo obtener el nombre de la cuenta de usuario bajo la cual se ejecutan estos procesos. ¿Me puedes ayudar?
-- DL
Respuesta:
Hola, DL. Sí, podemos ayudarte. Determinar en qué cuenta se está ejecutando un proceso es bastante simple, pero no es particularmente obvio cómo hacerlo. Si es como la mayoría de las personas, probablemente esté escaneando las propiedades de la clase Win32_Process en busca de una propiedad denominada Cuenta o Nombre de usuario o similar. Lo más probable es que no lo encuentres.
Esto sucede porque Win32_Process no tiene propiedades que le indiquen en qué cuenta se está ejecutando el proceso.
Es necesario utilizar el método "GetOwner" para capturar esta información. El siguiente script le indica en qué cuenta se está ejecutando Microsoft Word (Winword.exe):
strComputer = "."Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root \cimv2" )
Establezca colProcessList = objWMIService.ExecQuery _ ("Seleccione * de Win32_Process donde Nombre = 'Winword.exe'")
Para cada objProcess en colProcessList objProcess.GetOwner strUserName, strUserDomain Wscript .Echo "Process " & objProcess.Name & " es propiedad de " _ strUserDomain & "\" & strUserName & "."Next
Lo que más nos interesa es la siguiente línea de código:
objProcess.GetOwner strNameOfUser, strUserDomain
Lo que hacemos aquí es llamar al método "GetOwner". GetOwner devuelve dos "parámetros de salida",
Uno devuelve el nombre del usuario responsable del proceso y el otro devuelve el dominio al que pertenece el usuario. Para capturar estos dos parámetros de salida, debemos proporcionar dos variables al método GetOwner.
En este script de ejemplo, utilizamos dos variables llamadas strUserName y strUserDomain. Los nombres son opcionales; puedes llamar a las variables A y B o X e Y o cualquier otra cosa que desees.
Sin embargo, el orden de las variables no se puede establecer arbitrariamente: el primer valor devuelto es siempre el nombre de usuario y el segundo valor es siempre el dominio. Esto significa que si desea que X represente el nombre de usuario e Y represente el dominio, entonces debe asegurarse de que su código se parezca a esta línea de código:
objProcess.GetOwner X, Y
Después de llamar a GetOwner, podemos repetir directamente el nombre del proceso y el propietario. Tenga en cuenta que podemos ser un poco sofisticados: use el formato dominio\usuario. De esta manera podemos repetir un nombre como "fabrikam\kenmyer".
A continuación se proporciona otro script que enumera todos los procesos en la computadora y el propietario de cada proceso:
strComputer = "."Set objWMIService = GetObject(" winmgmts:\\" & strComputer & "\root\cimv2")
Establezca colProcessList = objWMIService.ExecQuery _ ("Select * from Win32_Process")
Para cada objProcess en colProcessList objProcess.GetOwner strUserName, strUserDomain Wscript .Echo "Process " amp; objProcess.Name amp " es propiedad de " _ amp; strUserDomain amp "\" strUserName amp ". "Siguiente
Algunas personas pueden encontrar extraño que enero; El 3 de enero de 2005 es el día libre oficial para los empleados de Microsoft.
Entonces, ¿por qué hay una columna "¡Hola, chico del scripting!" Esto sólo puede deberse a la increíble dedicación y dedicación mostradas por los Microsoft Scripting Guys en su trabajo.
O podría ser que algún gurú del scripting (aún no puedo nombrarlo) no se dio cuenta de que era feriado y se presentó como de costumbre (¡y a las 7 am!).
------------------------------------------- ----- ---------------------------------------------
16 ¿Puedes convertir la salida del script para copiar al portapapeles?
Pregunta:
¡Hola, chico del scripting! ¿Hay alguna manera de copiar la salida del script al portapapeles?
--ZW, Marsella, Francia
Respuesta:
Hola, ZW. Si no te importan algunas soluciones locas, entonces funcionará Copiar script. enviar al portapapeles es bastante fácil.
Primero, necesita construir una cadena que contenga la salida deseada. Luego, crea una instancia de Internet Explorer y abre una página en blanco en ella. A continuación, utilice la funcionalidad integrada del modelo de objetos de Internet Explorer para copiar la cadena al portapapeles; en particular, puede utilizar el método clipboardData.SetData para realizar este truco.
Un script de ejemplo para copiar algunos datos al portapapeles es el siguiente:
strCopy = "Este texto se ha copiado al portapapeles."
Set objIE = CreateObject("InternetExplorer.Application " )
objIE.Navigate("about:blank")
objIE.document.parentwindow.clipboardData.SetData "texto", strCopy
objIE.Quit
Ejecute el script, luego abra el Bloc de notas y haga clic en Pegar. Debería ver la cadena copiada.
Por cierto, todo esto sucede "detrás de escena" e Internet Explorer en realidad no aparece en la pantalla.
Esto se debe a que, de forma predeterminada, cualquier instancia de IE creada mediante un script está oculta en tiempo de ejecución a menos que la muestre usando:
objIE = True
.