source

파워셸에서 문(블록)을 사용하여 구현하는 방법은 무엇입니까?

factcode 2023. 7. 28. 22:57
반응형

파워셸에서 문(블록)을 사용하여 구현하는 방법은 무엇입니까?

PowerShell에서 사용 블록을 작성하려면 어떻게 해야 합니까?

다음은 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)

도와주셔서 감사합니다.

Using-Object의 솔루션은 다음과 같습니다. 호출을 통해 작동하는 C#의 "사용" 문의 PowerShell 버전.Dispose()마지막 블록에서:

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

사용 방법은 다음과 같습니다.

Using-Object ($streamWriter = New-Object System.IO.StreamWriter("$pwd\newfile.txt")) {
    $streamWriter.WriteLine('Line written inside Using block.')
}

언급URL : https://stackoverflow.com/questions/42107851/how-to-implement-using-statment-block-in-powershell

반응형