web-dev-qa-db-ja.com

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)

ご協力ありがとうございます。

17
Raskolnikov

解決策は次のとおりです。

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()
        }
    }
}

私はこの解決策を見つけました ここ そして私にとってはうまくいきました。

ただし、基本的には、finallyブロックでの破棄の実装です。

25
Bert Levrau