繁体   English   中英

为PowerShell Invoke-Sqlcmd设置默认变量

[英]Setting default variables for a PowerShell Invoke-Sqlcmd

我下面有一个称为Invoke-SqlCmd的函数:

function Invoke-Sqlcmd4
{
    param(
    [string]$ServerInstance = 'server.database.windows.net',
    [string]$Database = 'db',
    [string]$Uid = 'john',
    [string]$Pwd = 'pwd123',
    [string]$Query,
    [Int32]$QueryTimeout
    )

    $conn=new-object System.Data.SqlClient.SQLConnection
    $conn.ConnectionString="Server={0};Database={1};Integrated Security=False;User ID=john;Password=pwd123" -f $ServerInstance,$Database,$Uid,$Pwd
    $conn.Open()
    $cmd=new-object system.Data.SqlClient.SqlCommand($Query,$conn)
    $cmd.CommandTimeout=$QueryTimeout
    $ds=New-Object system.Data.DataSet
    $da=New-Object system.Data.SqlClient.SqlDataAdapter($cmd)
    [void]$da.fill($ds)
    $conn.Close()
    $ds.Tables[0]
}

可以通过以下行来调用:

Invoke-Sqlcmd4 -ServerInstance server.database.windows.net -Database db -Uid john -Pwd pwd123 -Query $query -QueryTimeout 60

但是,我不想每次使用此功能时都必须键入连接字符串的详细信息。 也就是说,我在函数中的参数已经在函数中设置了,所以我不想每次都重新键入它们。

我本质上希望能够使用如下代码:

Invoke-Sqlcmd4 -Query $query -QueryTimeout 60

因此它已经从我的函数中知道我的连接字符串是什么。 任何帮助,我们将不胜感激。

谢谢,约翰

function Invoke-Sqlcmd4
{
param(
[string]$ServerInstance = 'mysqlserver\mysqlinstance',
[string]$Database = 'master',
[string]$Uid = 'john',
[string]$Pwd = 'pwd123',
[string]$Query,
[Int32]$QueryTimeout
)

$conn=new-object System.Data.SqlClient.SQLConnection
$conn.ConnectionString="Server={0};Database={1};Integrated Security=False;User ID=john;Password=pwd123" -f $ServerInstance,$Database,$Uid,$Pwd
$conn.Open()
$cmd=new-object system.Data.SqlClient.SqlCommand($Query,$conn)
$cmd.CommandTimeout=$QueryTimeout
$ds=New-Object system.Data.DataSet
$da=New-Object system.Data.SqlClient.SqlDataAdapter($cmd)
[void]$da.fill($ds)
$conn.Close()
$ds.Tables[0]
}

$myquery1='Select name from sys.databases'

Invoke-Sqlcmd4 -Query $myquery1 -QueryTimeout 60

现在,我关闭了您的安全性,仅在我的情况下使用了集成式安全保护,但是它确实有效,您可以轻松地将其切换回去。 我不确定您在查询中传递的位置,但这应该可以使您了解。 您可以在函数之外创建任何$ query变量,然后将其传递到函数中。 对我来说很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM