如何在powershell中实现using语句?

时间:2017-02-08 08:14:51

标签: c# powershell

如何在power shell中使用?

这是C#

中的工作示例
using (var conn = new SqlConnection(connString))
{
    Console.WriteLine("InUsing");
}

我在Powershell中需要相同的功能(不工作):

Using-Object ($conn = New-Object System.Data.SqlClient.SqlConnection($connString)) {

    Write-Warning -Message 'In Using';          
}

它正在使用而不使用:

$conn = New-Object System.Data.SqlClient.SqlConnection($connString)

感谢您的帮助。

1 个答案:

答案 0 :(得分:21)

这是一个解决方案:

function Using-Object
{
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)]
        [AllowEmptyString()]
        [AllowEmptyCollection()]
        [AllowNull()]
        [Object]
        $InputObject,

        [Parameter(Mandatory = $true)]
        [scriptblock]
        $ScriptBlock
    )

    try
    {
        . $ScriptBlock
    }
    finally
    {
        if ($null -ne $InputObject -and $InputObject -is [System.IDisposable])
        {
            $InputObject.Dispose()
        }
    }
}

我找到了这个解决方案Here,对我而言,它有效。

但它基本上是在finally块中实现dispose。