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.jsonal 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)