obs-powershell is a PowerShell module that lets you script Open Broadcast Studio.
obs-powershell is available on the PowerShell gallery, so you can use these two simple lines to install / import
Install-Module obs-powershell -Scope CurrentUser -Force
Import-Module obs-powershell -PassThru -ForceBefore you can use obs-powershell, you'll need to Connect-OBS.
You should only need to do this once: obs-powershell will cache this information.
You can find your WebSocketToken in obs studio in Tools -> WebSocket Server Settings -> Show Connect Info.
Copy the Server Password and set it into a variable, $myToken
Connect-OBS -WebSocketToken $myTokenAfter you've done this once, obs-powershell will attempt to connect every time the module is loaded.
Once you're connected, check out this nifty short sample of what you can do:
# Show-OBS lets you show all sorts of things.
# It will return a scene item.
$Stars = Show-OBS -Uri "https://pssvg.start-automating.com/Examples/Stars.svg"
Start-Sleep -Milliseconds 50
# We can .Hide/.Disable scene items
$Stars.Hide()
Start-Sleep -Milliseconds 50
# We can .Show/.Enable scene items
$Stars.Show()
Start-Sleep -Milliseconds 50
# We can make an item small
$Stars.Scale(0.1)
Start-Sleep -Milliseconds 50
# We can fit it to the screen
$stars.FitToScreen()
Start-Sleep -Milliseconds 50
# and we can make it big again, with an animation
$Stars.Scale("1%","100%","00:00:01")
Start-Sleep -Seconds 1
# We can do even more broad animations, like moving things across the screen.
$Stars.Animate(@{
    X = "-25%"
    Y = "50%"
    Scale = "20%"
}, @{
    X = "125%"
    Y = "50%"
    Scale = "50%"
    Rotation = 180
}, "00:00:05")
Start-Sleep -Seconds 1
# To see what any object can do in obs-powershell, run Get-Member.
$stars | Get-Memberobs-powershell gives you the ability to store and create effects that run over time.
For instance, we can FadeIn our stars
# Start the FadeIn effect on 'Stars.svg'
$Stars | Start-OBSEffect -EffectName "FadeIn"
Start-sleep -seconds 1
# Start the FadeOut effect on 'Stars.svg'
$Stars | Start-OBSEffect -EffectName "FadeOut"
Start-sleep -seconds 1
# Start the Colorloop effect on 'Stars.svg'
$Stars | Start-OBSEffect -EffectName "ColorLoop"
Start-sleep -seconds 1
# You can get all loaded effects with Get-OBSEffect
Get-OBSEffectGet-OBSSceneGet-OBSInputGet-OBSStatsGet-OBSInputKindGet-OBSMonitorGet-OBSRecordStatusStart-Recording # an alias to Start-OBSRecord Stop-Recording # an alias to Stop-OBSRecordStart-OBSRecord
Start-Sleep -Seconds 5
Stop-OBSRecord |
    Invoke-ItemGet-OBSScene |
    Select-Object -ExpandProperty Scene
    Get-OBSSceneItem |
    Set-OBSSceneItemEnabled -sceneItemEnabledGet-OBSScene |
    Select-Object -ExpandProperty Scene
    Get-OBSSceneItem |
    Set-OBSSceneItemEnabled -sceneItemEnabled:$falseobs-powershell communicates with OBS with the obs websocket.
obs-powershell has a command for every websocket request.
Because the obs-websocket cleanly documents it's protocol, most commands in obs-powershell are automatically generated with PipeScript.
To use obs-powershell, you'll need OBS and PowerShell Core. You can run both of these on any operating system.
Some commands in obs-powershell will not work unless you have additional software installed.
| Commands | Dependency | 
|---|---|
| Add/Set-OBSVLCSource | VLC | 
| Add/Set-OBS3DFilter | 3D Effect | 
| Add/Set-OBSShaderFilter | obs-shaderfilter 2.0+ | 
| Add/Set/Get-OBSWaveformSource | waveform source |