It's possible, but "console_command control" has some nasty side effects, which make it impractical to use.
Code:
declare_counter factionIndex
monitor_event FactionTurnStart FactionIsLocal
and I_TurnNumber = 666
; do this for all playable factions
if FactionType = romans
set_counter factionIndex 1
end_if
; etc.
if FactionType = blah
set_counter factionIndex 20
end_if
console_command control carthage
console_command capture_settlement SettlementName
; Restore control to the original faction
; do this for all playable factions
if I_CompareCounter factionIndex = 1
console_command control romans
end_if
; etc.
if I_CompareCounter factionIndex = 20
console_command control blah
end_if
terminate_monitor
end_monitor