Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Importing dbatools ends Transcript #2722

Closed
3 of 6 tasks
shaneis opened this issue Nov 22, 2017 · 17 comments
Closed
3 of 6 tasks

Importing dbatools ends Transcript #2722

shaneis opened this issue Nov 22, 2017 · 17 comments
Assignees

Comments

@shaneis
Copy link
Contributor

shaneis commented Nov 22, 2017

Bug Report

General Troubleshooting steps

  • Verified running latest release of dbatools?
    • dbatools Version 0.9.101
  • Verified errors are not related to permissions?
  • Can duplicate in new/fresh PowerShell.exe session?

Version Information

  • Operating System (Windows 10 Pro | 1703):
  • PowerShell Version: 5.1.15063.632
  • SQL Server (Edition|Version): N/A

Steps to Reproduce

  • Open a new PowerShell.exe shell
  • Start-Transcript
  • Either import explicitly (Import-Module dbatools) or implicilty (Get-Command -Module dbatools)
  • Check transcript (either try and stop it Stop-Transcript, or open the file) will be stopped silently
  • Attach any screenshots (if possible/allowed)
    image

Windows PowerShell transcript start
Start time: 20171122172615
Username: RWS\soneill
RunAs User: RWS\soneill
Machine: 0738-5CG140G7T (Microsoft Windows NT 10.0.15063.0)
Host Application: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Process ID: 13232
PSVersion: 5.1.15063.632
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.15063.632
BuildVersion: 10.0.15063.632
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1


Transcript started, output file is .\testing\transcript01.txt
17:26:15
][
00:00:00.0885026
] C:\Users\soneill\Desktop

[import-module dbatools


Windows PowerShell transcript end
End time: 20171122172629


  • Attach logs generated by dbatools (Get-DbatoolsLog)

Message : Registering runspace: dbatools-logging
Type : Verbose, Debug
Timestamp : 22/11/2017 17:26:25
FunctionName : Register-DbaRunspace
Level : Verbose
Runspace : 533dff0f-7227-4a46-83b7-6688d759143e
TargetObject : dbatools-logging

Message : Starting runspace: dbatools-logging
Type : Verbose, Debug
Timestamp : 22/11/2017 17:26:25
FunctionName : Start-DbaRunspace
Level : Verbose
Runspace : 533dff0f-7227-4a46-83b7-6688d759143e
TargetObject : dbatools-logging

Message : Registering runspace: dbatools-teppasynccache
Type : Verbose, Debug
Timestamp : 22/11/2017 17:26:25
FunctionName : Register-DbaRunspace
Level : Verbose
Runspace : 533dff0f-7227-4a46-83b7-6688d759143e
TargetObject : dbatools-teppasynccache

Message : Starting runspace: dbatools-teppasynccache
Type : Verbose, Debug
Timestamp : 22/11/2017 17:26:25
FunctionName : Start-DbaRunspace
Level : Verbose
Runspace : 533dff0f-7227-4a46-83b7-6688d759143e
TargetObject : dbatools-teppasynccache

Message : Registering runspace: dbatools-maintenance
Type : Verbose, Debug
Timestamp : 22/11/2017 17:26:25
FunctionName : Register-DbaRunspace
Level : Verbose
Runspace : 533dff0f-7227-4a46-83b7-6688d759143e
TargetObject : dbatools-maintenance

Message : Starting runspace: dbatools-maintenance
Type : Verbose, Debug
Timestamp : 22/11/2017 17:26:25
FunctionName : Start-DbaRunspace
Level : Verbose
Runspace : 533dff0f-7227-4a46-83b7-6688d759143e
TargetObject : dbatools-maintenance

Message : Updating runspace: dbatools-logging
Type : Verbose, Debug
Timestamp : 22/11/2017 17:26:27
FunctionName : Register-DbaRunspace
Level : Verbose
Runspace : e25ac209-02b9-45e3-9acf-a7cb70f01153
TargetObject : dbatools-logging

Message : Starting runspace: dbatools-logging
Type : Verbose, Debug
Timestamp : 22/11/2017 17:26:27
FunctionName : Start-DbaRunspace
Level : Verbose
Runspace : e25ac209-02b9-45e3-9acf-a7cb70f01153
TargetObject : dbatools-logging

Message : Updating runspace: dbatools-teppasynccache
Type : Verbose, Debug
Timestamp : 22/11/2017 17:26:27
FunctionName : Register-DbaRunspace
Level : Verbose
Runspace : e25ac209-02b9-45e3-9acf-a7cb70f01153
TargetObject : dbatools-teppasynccache

Message : Starting runspace: dbatools-teppasynccache
Type : Verbose, Debug
Timestamp : 22/11/2017 17:26:27
FunctionName : Start-DbaRunspace
Level : Verbose
Runspace : e25ac209-02b9-45e3-9acf-a7cb70f01153
TargetObject : dbatools-teppasynccache

Message : Updating runspace: dbatools-maintenance
Type : Verbose, Debug
Timestamp : 22/11/2017 17:26:27
FunctionName : Register-DbaRunspace
Level : Verbose
Runspace : e25ac209-02b9-45e3-9acf-a7cb70f01153
TargetObject : dbatools-maintenance

Message : Starting runspace: dbatools-maintenance
Type : Verbose, Debug
Timestamp : 22/11/2017 17:26:27
FunctionName : Start-DbaRunspace
Level : Verbose
Runspace : e25ac209-02b9-45e3-9acf-a7cb70f01153
TargetObject : dbatools-maintenance

  • Attach output from PowerShell console (if possible/allowed)

Feature Request

Problem to solve

Preferably not stop the transcripts.
Or warned that any started transcripts will be ended

Additional information

@wsmelton
Copy link
Member

This is an issue with use of run spaces and @FriedrichWeinmann can answer more but I don't believe this will be something we can fix without removing the run space code utilized to load the module.

This is fixed in PowerShell Core 6.0.0.0, reference issue

@SQLDBAWithABeard
Copy link
Contributor

So I asked on Twitter and got his response to get the active transcripts which works in this shop

https://twitter.com/SeeminglyScienc/status/933461048329371648

of course restarting it creates a new file so maybe it would be possible to grab the name and append post_dbatools_install(get-Random) to the name ?

`function Get-ActiveTranscriptPath {
[CmdletBinding()]
param()
end {
$flags = [System.Reflection.BindingFlags]'Instance, NonPublic'
$transcriptionData = $Host.Runspace.GetType().
GetProperty('TranscriptionData', $flags).
GetValue($Host.Runspace)

    $transcripts = $transcriptionData.GetType().
        GetProperty('Transcripts', $flags).
        GetValue($transcriptionData)
    
    if (-not $transcripts) {
        return
    }
    
    foreach ($transcript in $transcripts) {
        $transcript.GetType().
            GetProperty('Path', $flags).
            GetValue($transcript)
    }
}

}`

just in case gist goes away

@shaneis
Copy link
Contributor Author

shaneis commented Nov 23, 2017

There is also the possibility of restarting the transcript with -Append since we have all the information needed i.e. path the transcript is pointing to, no?

That way there should be no need to start a new one since they can continue the old one.

@SQLDBAWithABeard
Copy link
Contributor

Very nice @shaneis , I missed the append :-) Not enough coffee

@stale
Copy link

stale bot commented Oct 25, 2018

This issue has been automatically marked as stale because it has not had recent activity. If you would like this issue to remain open:

  • Verify that you can still reproduce the issue in the latest version of dbatools
  • Comment that the issue is still reproducible and include:
    • What version of dbatools you reproduced the issue on
    • What OS and version you reproduced the issue on
    • What steps you followed to reproduce the issue

@JustinGrote
Copy link

JustinGrote commented Nov 1, 2018

This item is still reproducible on 0.9.422. Workaround is to just import the module first

@stale stale bot removed the wontfix label Nov 1, 2018
@shaneis
Copy link
Contributor Author

shaneis commented Nov 1, 2018

I remember talking to @SQLDBAWithABeard about this when it was first reported.
Something to do with runspaces was what the root cause was, I believe.

There is a way to find out if a transcript has been started so we can restart it after the import, that we got shown from Twitter..
I didn't keep a record of that code though 😢

@potatoqualitee
Copy link
Member

I've had that experience with runspaces as well. @JustinGrote made a good suggestion to import the module first.

Not sure restarting transcripts is within scope. Will close as won't fix for now. If someone wants to fix and discuss in #dbatools-dev, they are welcomed if it's considered in-scope by a few dbatools devs.

Otherwise, please do import then start transcript.

@potatoqualitee
Copy link
Member

potatoqualitee commented Nov 10, 2018

mmm, actually, i'm making headway with other commands. just not sure i can fix the psm1 import. but i found http://stevegilham.blogspot.com/2017/02/powershell-transcript-cmdlets-and.html

and from that find the following to be effective

$save = [System.Management.Automation.Runspaces.Runspace]::DefaultRunspace
# code
[System.Management.Automation.Runspaces.Runspace]::DefaultRunspace = $save

@potatoqualitee
Copy link
Member

potatoqualitee commented Nov 10, 2018

okay so check this out

No problem:

  1. Import-Module dbatools
  2. Start-Transcript
  3. Run Get-DbaDatabase
  4. Stop-Transcript

No problem:

  1. Start-Transcript
  2. Import-Module dbatools
  3. Stop-Transcript

Problem:

  1. Start-Transcript
  2. Import-Module dbatools
  3. Get-DbaDatabase
  4. Stop-Transcript

not sure whats up, gonna keep digging but it's not looking super promising

@potatoqualitee
Copy link
Member

I tried a few things but this is out of my league. especially since it appears to occur when a command is run (cuz maybe that initializes a runspace after i set it back in the psm1?)

@FriedrichWeinmann may have some insight since runspaces are his jam, but he's low on time and I won't be able to provide anything further. If anyone else would like to take a look, that'd be fab.

@potatoqualitee
Copy link
Member

Please let me know if anyone will be taking this on. If not, I'm going to close it with the recommended workaround.

One good thing that came out of this, though, is that a couple of the other commands were fixed. The only thing I can't fix is command running post import.

@shaneis
Copy link
Contributor Author

shaneis commented Nov 12, 2018

I'll aim to take this on but not sure how far I can take it without seriously "upping" my PoSh skills...

@cjsommer
Copy link
Contributor

cjsommer commented Nov 27, 2018

Just wanted to add another comment to this. I was receiving the transcript error on a restore script (using Restore-DbaDatabase) and could not for the life of me figure out why.

An error occurred stopping transcription: The host is not currently transcribing. Stop-Transcript : An error occurred stopping transcription: The host is not currently transcribing.

So I started googling the error which landed me here.

I am trying the workaround by moving the Import-Module dbatools to before the Start-Transcript and will check back in the AM to see if that resolved my issue.

edit Moving the Start-Transcript to after the Import-Module dbatools fixed my issue.

@potatoqualitee
Copy link
Member

I was wrong in my previous message. Seems I just needed to give it time to kill the transcript.

image

@potatoqualitee
Copy link
Member

Gonna agree with @wsmelton's position over a year ago. This is a problem in PS 5.1 that was fixed in PS6. I asked in the referenced issue if it'll be fixed in 5.1 but don't have much hope.

image

image

@potatoqualitee
Copy link
Member

Hey good news, everyone:

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants