﻿TOPIC
	about_dbatools_support

SHORT DESCRIPTION
	Describes how to contact support and what information we need

LONG DESCRIPTION
	Welcome to the dbatools support guide.
	If you are reading this, odds are, something went wrong and you are looking
	for support. Sorry for the inconvenience - we try our best to have dbatools
	as free of bugs as we can manage. Doesn't always work out.

	This article describes how you can reach us and what information we need
	when you do.


	#-------------------------------------------------------------------------#
	#                           Table of Contents                             #
	#-------------------------------------------------------------------------#

	- Getting Help
	- Troubleshooting Support
	- A matter of timing
	- What happens now?
	- The world need not burn


	#-------------------------------------------------------------------------#
	#                              Getting Help                               #
	#-------------------------------------------------------------------------#

	When something breaks unexpectedly, you'll probably want help. Well, most of
	us in the team work on dbatools, because we a) have fun coding and b) like
	the community (there is no pay involved whatsoever). So, come see us in our
	Slack channel or file an issue on github. We will gladly attempt to help you
	with any technical issues using our module (we love our module, we'll remove
	any malfunctioning blemishes that we can!).

	In order to find us, you can visit us on Slack by following this link:
	https://dbatools.io/slack/
	This has the advantage of the easiest interaction and often the fastest
	resolution times for smaller issues.

	Alternatively, you can file an issue on github:
	https://github.com/dataplat/dbatools/issues
	(Don't worry: It's relatively straightforward and easy to do)

	When you describe an error, please be prepared to provide some information,
	such as what code you were trying to execute and what the error was. For
	more details on this, see the next chapter: "Troubleshooting Support"


	#-------------------------------------------------------------------------#
	#                         Troubleshooting Support                         #
	#-------------------------------------------------------------------------#

	When trying to figure out, what went wrong, we usually need information,
	quite a bit of it, in fact. Usual information we care about:
	- Code/line you were running
	- Output / Error / Warning received
	- Exception contents
	- Execution log
	- PowerShell Version
	- Operating System
	Now, we rarely need all of that, but often we don't know what of it we need
	before looking at it in more detail. That said, I highly recommend providing
	the first three points immediately, as they are fast to gather and already
	help a lot. We may ask for more as it comes up.

	# Code/line you were running #
	#----------------------------#

	Literally the code you executed. Make it as simple as possible and still
	produce the error. Make sure to replace sensitive data before posting it.
	If you can reduce it to a single line, that's great! (But don't sweat it if
	it's still more)

	# Output / Error / Warning received #
	#-----------------------------------#

	Generally, we catch errors and write warnings by default. Report what it
	wrote if that is the case. Same for red exception textes. Sometimes however,
	a command may just refuse to do anything at all. In that case it might just
	return nothing. If it doesn't write a warning or throw an exception, tell us
	what you expected it to do and what it did instead.
	Screenshots work very well for this.

	# Exception Contents #
	#--------------------#

	If the code threw an exception or wrote a warning, behind the scenes some
	code failed to work as designed. This failure information is usually the
	most valuable piece of information for troubleshooting. Generally, you can
	see that exception content by running the following line:

	  $error[0] | Select-Object *

	Directly after the command failed. Screenshot it.

	# Execution Log #
	#---------------#

	Dbatools logs a lot of information about how a function processes its logic.
	You can access that information by running Get-DbatoolsLog. In order to
	send in this information, start a new process and produce the error, then
	execute the following line:

	  Get-DbatoolsLog | Export-Csv messagelog.csv

	This will export the entire log into a csv file. You may want to edit out
	confidential information (replace it with something harmles) before
	submitting it.

	# PowerShell Version #
	#--------------------#

	We try to support versions 3-5.1 of PowerShell. Sometimes however we mess up
	and something doesn't work on all versions. Thus the actual PowerShell
	version is often of interest. You can find this information by running the
	following line:

	  $PSVersionTable

	# Operating System #
	#------------------#

	What version of Windows are you running your code on?

	# Ugh, this is a bit much, can't you just gather what you need yourself?! #
	#-------------------------------------------------------------------------#

	Yes, we can! We've got a command that gathers all the data that it can and
	bundles it in a zip file for submission. Beware though: It is seriously hard
	to hide or redact data from it, as it gathers a lot and stores it in an XML
	file that must be edited from PowerShell, if at all. If you don't
	particularly worry about sharing the data though, simply run this command:

	  New-DbatoolsSupportPackage

	It'll handle the gathering. Just submit the resultant zip file and we have
	all the information your console has to give.


	#-------------------------------------------------------------------------#
	#                            A matter of timing                           #
	#-------------------------------------------------------------------------#

	When gathering information for an error, we highly recommend taking the
	following steps:

	- Start a new PowerShell console
	- Perform the action necessary to reproduce the error
	- Gather data

	This has two key benefits:
	- The least amount of data gets collected, meaning we have to search through
	  less material to find the cause.
	- Reduces the likelyhood of accidentally sharing confidential data


	#-------------------------------------------------------------------------#
	#                            What happens now?                            #
	#-------------------------------------------------------------------------#

	Alright, you've gathered the data needed and told us about the issue? Good.
	What happens next usually depends on what kind of issue it is and where you
	went to report it:

	Reported on Slack
	- Minor bug: When you report what turns out to be a minor bug (minor
	  refering to the technical complexity of the issue, not your problem that
	  lead you to us), especially on the slack channels, odds are, on of us
	  picked it up and immediately resolved it. In this case we'll tell you
	  "it's handled" and that's it as far as you go: In the next release, the
	  issue will be gone.
	- Major issue: Some bugs are just too technically complex to solve on the
	  fly. In those cases we will ask you to file an issue or file it for you,
	  whichever you prefer. We'll try to see it resolved in a timely manner and
	  inform you as it has been resolved or ask you to try out a current build
	  and confirm it.

	Reported on GitHub
	The key differences between reporting a problem on Github and doing so on
	Slack is that are:

	a) We cannot ask questions directly as you post.
	b) Reporting the issue does not require team members to be present.

	We often ARE there, hanging out in Slack, but it is not automatically
	guaranteed. That being said, after you have filed an issue on GitHub, please
	keep track of that issue, as we will likely ask questions or ask you to test
	out solutions. Really, the process is mostly the same, only that since we
	can't make sure all the information we need is there when you report it, we
	may need to ask for it.


	#-------------------------------------------------------------------------#
	#                         The world need not burn                         #
	#-------------------------------------------------------------------------#

	Thank you for reading our advisory on receiving support. Note however: It is
	totally not necessary to wait until something breaks to contact us: Come on
	over into the slack channels and hang out, discuss sql server or the
	benefits of the	local breweries.


KEYWORDS
	dbatools general support help
