Skip to content

ShiyangQiu/PowerShell

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PowerShell

Various PowerShell functions and scripts. These are published as WFTools on the PowerShell Gallery (thanks to @psrdrgz for the idea!)

Instructions

These files contain functions. For example, Invoke-Sqlcmd2.ps1 contains the Invoke-Sqlcmd2 function.

    # PowerShell 5, or PackageManagement available?
    Install-Module WFTools -Force
    Import-Module WFTools
    Get-Command -Module WFTools
    Get-Help ConvertTo-FlatObject -Full

    # Alternatively:
    # Download and unblock the file(s).
    # Dot source the file(s) as appropriate.
    . "\\Path\To\Invoke-Sqlcmd2"

    # Use the functions
    Get-Help Invoke-Sqlcmd2 -Full
    Invoke-Sqlcmd2 -ServerInstance MyServer\MyInstance -Query "SELECT ServerName, VCNumCPU FROM tblServerInfo" -As PSObject -Credential $cred | ?{$_.VCNumCPU -gt 8}

Note: Using Import-Module to load these functions will break certain scenarios for Invoke-Parallel's variable import (details) - dot source the function if you need this.

Invoke-Sqlcmd2

I'm a fan of Invoke-Sqlcmd2. Props to Chad Miller and the other contributors for a fantastic function. I've added a few features with much help from others:

  • Added pipeline support, with the option to append a ServerInstance column to keep track of your results:
    • Add ServerInstance column
  • Added the option to pass in a PSCredential instead of a plaintext password
    • Use PSCredential
  • Added PSObject output type to allow comparisons without odd [System.DBNull]::Value behavior:
    • Previously, many PowerShell comparisons resulted in errors:
      • GT Comparison Errors
    • With PSObject output, comparisons behave as expected:
      • GT Comparison Fix
    • Previously, testing for nonnull / null values did not work as expected:
      • NotNull Fails
    • With PSObject output, null values are excluded as expected
      • NotNull Fails Fix
    • Speed comparison between DataRow and PSObject output with 1854 rows, 84 columns:
      • Speed PSObject v Datarow

That DBNull behavior is strange! Why doesn't it behave as expected?

I agree. PowerShell does a lot of work under the covers to provide behavior a non-developer might expect. From my perspective, PowerShell should handle [System.DBNull]::Value like it does Null. Please vote up this Microsoft Connect suggestion if you agree!

Major thanks to Dave Wyatt for providing the C# code that produces the PSObject output type as a workaround for this.

You clearly don't know SQL. Why are you working on this function?

I absolutely do not know SQL. If I'm doing something wrong please let me know!

I have a number of projects at work that involve PowerShell wrappers for SQL queries. Invoke-Sqlcmd2 has been my go-to command for this - now that I'm spending more time with it, I plan to add some functionality.

Why is Invoke-Sqlcmd2 here?

I copied the code here to avoid the automated tweets for Poshcode.org submissions. I make many small changes and didn't want to spam twitter : )

TechNet Galleries Contributions

Many of these functions started out in the Technet Gallery. You might find more context at these links.

Help!

Would love contributors, suggestions, feedback, and other help!

About

Various PowerShell functions and scripts

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PowerShell 100.0%