id: 2788027
title: "Automatización de carga de escenas OBS en Windows"
published: true
tags: ["obs", "powershell", "windows", "automation"]
series: "Lo Arreglé y No Sé Cómo"
description: "🎬 Lo arreglé y no sé cómo: Automatización de carga de escenas OBS en Windows 🇬🇧 Also read..."
canonical_url: "https://dev.to/ivajofranc/automatizacion-de-carga-de-escenas-obs-en-windows-4al2"
cover_image: "https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp5afeg9yiacrvhcc0law.png"
🎬 Lo arreglé y no sé cómo: Automatización de carga de escenas OBS en Windows
🇬🇧 Also read this post in English
Todo empezó con algo que parecía sencillo: quería que cada vez que cualquier usuario iniciara sesión en un PC, se copiara automáticamente un archivo de escenas de OBS (scenes.json
) en su perfil. En teoría, solo era un script de PowerShell. En la práctica, fue otra historia.
🧩 El script PowerShell básico
Primero armé el script copiar_escenas_test.ps1
, que básicamente se encargaba de copiar el archivo scenes.json
a la carpeta de escenas de OBS en el perfil del usuario:
$origen = "C:\Ruta\Origen\scenes.json"
$destinoDir = "$env:APPDATA\obs-studio\basic\scenes"
$destino = Join-Path -Path $destinoDir -ChildPath "scenes.json"
if (!(Test-Path -Path $destinoDir)) {
New-Item -ItemType Directory -Path $destinoDir -Force | Out-Null
}
Copy-Item -Path $origen -Destination $destino -Force
Sencillo, ¿no? Pues ahora había que hacer que se ejecutara en cada inicio de sesión.
🔍 Primeras ideas: la vía oficial (GPO)
La primera solución que pensé fue: usar una GPO en Active Directory para lanzar el script al inicio de sesión del usuario.
En papel, perfecto: centralizado, controlado y con logs.
En la realidad… demasiado pesado para un solo equipo. Decidí buscar algo más simple.
🚀 La alternativa: carpeta de inicio común
Me fui por la clásica carpeta de inicio:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
Primer intento: un acceso directo con .bat
Hice un .bat
que creaba un acceso directo para ejecutar el PowerShell. Funcionó, pero con un detalle incómodo: se abría la ventana de PowerShell al iniciar sesión. Visualmente quedaba feo.
🛠 La solución final: un .vbs
para esconderlo
El truco fue interponer un .vbs
que ejecutara el script de PowerShell oculto:
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "powershell.exe -ExecutionPolicy Bypass -File \"C:\Ruta\copiar_escenas_test.ps1\"", 0, False
Y luego un .bat
para crear el acceso directo hacia ese .vbs
:
@echo off
set startup=%ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup
powershell "$s=(New-Object -COM WScript.Shell).CreateShortcut('%startup%\Copiar escenas test.lnk');$s.TargetPath='wscript.exe';$s.Arguments='\"C:\Ruta\oculto_test.vbs\"';$s.WorkingDirectory='C:\Ruta';$s.Save()"
Ahora sí: se ejecutaba al inicio de sesión, sin ventanas molestas y sin depender de privilegios raros.
🧪 Comprobación silenciosa
Para asegurarme de que todo funcionaba, añadí un log al final del .ps1
:
Add-Content "$env:TEMP\obs_test_log.txt" "Copiado el $(Get-Date)"
Así podía verificarlo sin preguntar a los usuarios.
✅ Resultado
- Cada inicio de sesión copia el archivo
scenes.json
al perfil correcto. - La ejecución es invisible para el usuario.
- No requiere permisos de administrador.
- No hubo que tocar políticas de ejecución globales.
En resumen: parecía un lío, pero quedó funcionando fino. Otro caso de “Lo arreglé y no sé cómo”.
Top comments (0)