script run query from examples example commands sql powershell invoke

run - script sql powershell



PowerShell Invoke-Sqlcmd cambia a la sesiĆ³n de sqlps (3)

El sqlps módulo sqlps es dejarlo en el psdrive que crea. Estoy bastante seguro de que la gente le ha pedido a Microsoft que arregle esto, ya que es muy molesto y disruptivo.

La importación automática de módulos introducida por PowerShell 3.0 hace que esto sea aún más molesto, porque es posible que ni siquiera se dé cuenta de que está importando el módulo hasta después del hecho.

Cuando uso sqlps , lo importo explícitamente para poder controlar mi directorio de trabajo de la siguiente manera:

push-location import-module sqlps -disablenamechecking pop-location

Esto lo regresa a su directorio anterior después de que se carga el módulo.

Edición muy tardía: con la llegada de SQL Server Management Studio 2016, tenemos un nuevo módulo PowerShell, sqlserver , que sustituye a sqlps y resuelve este problema.

Estoy escribiendo un script en PowerShell ISE y estoy usando Invoke-Sqlcmd. Después de ejecutar el comando, la sesión de Powershell cambia a sesión sqlps (PS SQLSERVER:>) y no puedo ejecutar el script por segunda vez. Tengo que salir de PowerShell ISE y volver a iniciarlo.

Así que mi pregunta es: cómo volver a cambiar de sqlps a ps regular o cómo evitar que Invoke-Sqlcmd cambie de sesión.

Invoke-Sqlcmd -ServerInstance $server -Database master -Username $user -Password $password -InputFile $file ` -ErrorAction Stop -OutputSqlErrors $true -Variable $variable

Esto no funciona:

Push-Location Invoke-Sqlcmd -ServerInstance $server -Database master -Username $user -Password $password -InputFile $file ` -ErrorAction Stop -OutputSqlErrors $true -Variable $variable Pop-Location



Un simple cd ''directorio de su elección'' lo regresará al directorio anterior en el que estaba.

PS SQLSERVER:/> cd D:

Resultado:

PS D:/>