PoshBot
0.8.0
A Powershell-based bot framework for ChatOps. PowerShell modules are loaded into PoshBot and instantly become available as bot commands. PoshBot currently supports connecting to Slack to provide you with awesome ChatOps goodness. Bot commands can optionally be secured via permissions, roles, and groups to control who can execute what.
Minimum PowerShell version
5.0
Installation Options
Owners
Copyright
(c) 2017 Brandon Olin. All rights reserved.
Package Details
Author(s)
- Brandon Olin
Tags
Functions
Get-PoshBot Get-PoshBotConfiguration Get-PoshBotStatefulData New-PoshBotAce New-PoshBotBackend New-PoshBotConfiguration New-PoshBotFileUpload New-PoshBotInstance New-PoshBotScheduledTask New-PoshBotSlackBackend New-HelloPlugin New-PoshBotCardResponse New-PoshBotTextResponse Remove-PoshBotStatefulData Save-PoshBotConfiguration Set-PoshBotStatefulData Start-PoshBot Stop-Poshbot
Dependencies
Release Notes
## [0.8.0] 2017-10-01
### Added
- Commands can now be marked as needing approval by someone in a designated group.
Commands that require approval will be put into a pending state with an expiration time set via the bot configuration.
These pending commands can be approved by the calling user (if calling user is already in designed approval group) or require peer approval by another user.
Pending commands can either be approved or denied by a user in the approver group(s). Who approved (or denied) a command is logged.
- Added builtin commands [approve], [deny], and [pending] to managed commands that require approval.
- Added new message reactions to reflect pending / approved, or denied command status.
- For convenience, added the name of the user [FromName] and name of the channel [ToName] to the [$global:PoshBotContext] object that is available to all bot commands.
### Fixed
- Ignore ephemeral messages from Slack that come from SlackBot. We don't want to attempt to trigger commands based on these.
- Config provided parameters can now be used on commands of type [regex].
- Do not send command reactions to event-triggered commands as there is not a normal message to add the reaction to.
### Changes
- Modules are now removed from the PowerShell session when removed from PoshBot.
- Add warning reaction to commands that have any items in the warning stream of the job.
## [0.7.1] 2017-09-03
### Fixed
- Bugs in [CommandParser] class when parsing certain strings (particularly complex urls and @mentions)
### Changes
- The Slack backend will now translate @mentions that are internally referenced by Id into a username.
'<@U4AM3SYI8>' becomes '@devblackops'
## [0.7.0] 2017-08-29
### Added
- Support for importing PowerShell modules that include cmdlets as well as functions.
Note that custom PoshBot metadata to control command name, aliases, command type, etc is currently not supported on cmdlets.
- New bot configuration properties [MaxLogSizeMB] and [MaxLogsToKeep] to control log file size and rotation.
- Command execution history is now logged by default to a separate log file [CommandHistory.log].
Command history log settings can be controlled with configuration properties [LogCommandHistory], [CommandHistoryMaxLogSizeMB], and [CommandHistoryMaxLogsToKeep].
- New [slap] command to slap a user with a large trout (via @jaapbrasser)
### Changes
- Implemented and improved information, verbose, and debug logging throughout PoshBot.
### Fixed
- Bug where parser was incorrectly parsing URLs in command string
- Bug where users who had no permissions assigned via groups/roles where being prevented from executing commands that had no permissions attached to them.
who had no permissions assigned to them
- Improved reconnection logic and logging in Slack backend implementation.
## [0.6.0] 2017-07-18
### Added
- New builtin command 'Update-Plugin' which updates an existing plugin to a newer version and optionally removes all previous versions.
- New command [Get-CommandStatus] to show running commands.
### Fixed
- Better error handling logic when parsing command help.
- Use [Configuration] module when reading in bot configuration with [Get-PoshBotConfiguration] so PSCredentials can be deserialized correctly.
- Improved user name/id resolution to avoid Slack API rate limits.
- Fixed regression when using the [PoshBot.BotFrom()] custom attribute with an empty parameter.
- PR46 - Adjust help filter in [Get-CommandHelp] command to match exact first and display results if exactly one command was matched.
Continue with existing behavior if more than one command is returned. (via @RamblingCookieMonster)
## [0.5.0] 2017-06-14
### Added
- Any regex group matches are now passed in the [Arguments] parameter to the function/command.
- Ability to specify a version of a loaded plugin command to execute.
Use `plugin:command:version` or `command:version` syntax to execute the command from a specific version of the plugin.
- Support for one time scheduled commands. Commands can now be scheduled to execute once after the specified start date/time.
- Improved the help usage text for commands.
- The [!help] command now matches against command aliases as well.
### Fixed
- Help syntax now reflects the command name (as known in PoshBot) instead of PowerShell function name.
### Changed
- Command usage help is now displayed differently according to the command's trigger type.
For [Command] trigger types, the command/function's parameters are show, for [Regex] trigger
types, the trigger regex expression is shown.
## [0.4.1] 2017-06-06
### Fixed
- Bug when displaying command help with !help command
## [0.4.0] 2017-06-05
### Added
- Asynchronous command execution
- Message reactions to indicate a command is executing, succeeded, or failed.
- Scheduled command functionality. Commands can now be scheduled for execution every N days/hours/minutes/seconds.
### Fixed
- Bug preventing plugin commands from being executed in PS jobs. Commands were previously being executed in the same session as the bot.
- Replaced error with warning when one of the bot configuration file is not found.
## [0.3.1] 2017-05-17
### Fixed
- When parsing the command from the message returned from the chat network, deal with null or empty text strings correctly.
- Resolve PSScriptAnalyzer warnings
## [0.3.0] 2017-05-16
### Added
- PR31: Functions to get/set/remove stateful data within plugin command (via @RamblingCookieMonster)
- Ability to override command name via the [PoshBot.BotCommand] attribute.
- Ability to set aliases for a command via the [PoshBot.BotCommand] attribute.
- Ability to use [array] and [switch] parameter values for commands.
- Code block support to custom text response via New-PoshBotTextResponse.
- File upload support via new custom response function New-PoshBotFileUpload.
## [0.2.3] Unreleased
### Fixed
- Respect changes to [Admin] role that are saved to storage.
### Added
- New global variable $global:PoshBotContext inserted into PowerShell job so commands have extra context detailing how the command was triggered.
## [0.2.2] 2017-04-17
### Fixed
- Command tokenization issues on Nano Server.
- #24: Nano Server compatibility
## [0.2.1] 2017-04-14
### Fixed
- #23: Issue with retrieving module command attribute type names on Nano server.
## [0.2.0] 2017-04-06
### Added
- Commands to create and assign adhoc permissions
## [0.1.3] Unreleased
### Added
- New builtin command [Find-Plugin] to find available plugins in the desired PowerShell repository
## [0.1.2] - 2017-03-24
### Fixed
- Bot command names are now set to the value of the CommandName property of [PoshBot.BotCommand()] if defined. Previously, this didn't work and the bot command names always used the function name
- Fixed a bug in the builtin command [Install-Plugin] where if specified, the specific version of a plugin to install produced an error
## [0.1.1] - 2017-03-23
### Fixed error in !install-plugin command when installing plugins that had a dependency on the PoshBot module.
## [0.1.0] - 2017-03-21
### Added
- Initial documentation for mkdocs
- New function to create scheduled task to run PoshBot
- New builtin command to get recent command execution history
- Commands to remove plugins/roles/groups
- Support for multiple plugin versions
### Changed
- Standardized builtin bot command parameter names
- Move demo commands (WolframAlpha, Giphy) into separate plugin repos
- Move network plugin into separate repo
### Fixed
- Fix StopUpstreamCommandsException exception from being thrown in Install-Plugin command
## [0.0.1] - 2016-12-18
### Added
- Initial commit
FileList
- poshbot.nuspec
- poshbot.psd1
- poshbot.psm1
- PoshBotAttribute.ps1
- en-US\PoshBot-help.xml
- Plugins\Builtin\Builtin.psd1
- Plugins\Builtin\builtin.psm1
- Plugins\Builtin\Public\About.ps1
- Plugins\Builtin\Public\Add-CommandPermission.ps1
- Plugins\Builtin\Public\Add-GroupRole.ps1
- Plugins\Builtin\Public\Add-GroupUser.ps1
- Plugins\Builtin\Public\Add-RolePermission.ps1
- Plugins\Builtin\Public\Approve-PendingCommand.ps1
- Plugins\Builtin\Public\Deny-PendingCommand.ps1
- Plugins\Builtin\Public\Disable-Plugin.ps1
- Plugins\Builtin\Public\Disable-ScheduledCommand.ps1
- Plugins\Builtin\Public\Enable-Plugin.ps1
- Plugins\Builtin\Public\Enable-ScheduledCommand.ps1
- Plugins\Builtin\Public\Find-Plugin.ps1
- Plugins\Builtin\Public\Get-CommandHelp.ps1
- Plugins\Builtin\Public\Get-CommandHistory.ps1
- Plugins\Builtin\Public\Get-CommandStatus.ps1
- Plugins\Builtin\Public\Get-Group.ps1
- Plugins\Builtin\Public\Get-PendingCommand.ps1
- Plugins\Builtin\Public\Get-Permission.ps1
- Plugins\Builtin\Public\Get-Plugin.ps1
- Plugins\Builtin\Public\Get-PoshBotStatus.ps1
- Plugins\Builtin\Public\Get-Role.ps1
- Plugins\Builtin\Public\Get-ScheduledCommand.ps1
- Plugins\Builtin\Public\Install-Plugin.ps1
- Plugins\Builtin\Public\New-Group.ps1
- Plugins\Builtin\Public\New-Permission.ps1
- Plugins\Builtin\Public\New-Role.ps1
- Plugins\Builtin\Public\New-ScheduledCommand.ps1
- Plugins\Builtin\Public\Remove-Group.ps1
- Plugins\Builtin\Public\Remove-GroupRole.ps1
- Plugins\Builtin\Public\Remove-GroupUser.ps1
- Plugins\Builtin\Public\Remove-Plugin.ps1
- Plugins\Builtin\Public\Remove-Role.ps1
- Plugins\Builtin\Public\Remove-RolePermission.ps1
- Plugins\Builtin\Public\Remove-ScheduledCommand.ps1
- Plugins\Builtin\Public\Set-ScheduledCommand.ps1
- Plugins\Builtin\Public\Slap.ps1
- Plugins\Builtin\Public\Update-GroupDescription.ps1
- Plugins\Builtin\Public\Update-Plugin.ps1
- Plugins\Builtin\Public\Update-RoleDescription.ps1
- Task\StartPoshBot.ps1
Version History
Version | Downloads | Last updated |
---|---|---|
0.13.0 | 19,063 | 5/3/2020 |
0.12.0 | 649 | 3/6/2020 |
0.11.8 | 2,027 | 8/31/2019 |
0.11.7 | 328 | 8/9/2019 |
0.11.6 | 1,695 | 4/3/2019 |
0.11.5 | 491 | 2/28/2019 |
0.11.4 | 589 | 1/18/2019 |
0.11.3 | 582 | 11/7/2018 |
0.11.2 | 293 | 10/12/2018 |
0.11.1 | 187 | 10/2/2018 |
0.11.0 | 297 | 9/9/2018 |
0.10.2 | 1,120 | 5/5/2018 |
0.10.1 | 232 | 4/6/2018 |
0.10.0 | 792 | 12/14/2017 |
0.9.0 | 117 | 12/7/2017 |
0.8.0 (current version) | 449 | 10/2/2017 |
0.7.1 | 225 | 9/3/2017 |
0.7.0 | 46 | 8/30/2017 |
0.6.0 | 275 | 7/18/2017 |
0.5.0 | 181 | 6/15/2017 |
0.4.1 | 73 | 6/6/2017 |
0.4.0 | 34 | 6/6/2017 |
0.3.1 | 98 | 5/18/2017 |
0.3.0 | 34 | 5/17/2017 |
0.2.2 | 134 | 4/18/2017 |
0.2.1 | 51 | 4/15/2017 |
0.2.0 | 73 | 4/7/2017 |
0.1.3 | 58 | 3/25/2017 |
0.1.2 | 30 | 3/25/2017 |
0.1.1 | 37 | 3/24/2017 |
0.1.0 | 62 | 3/23/2017 |