sql >> データベース >  >> RDS >> Sqlserver

win32 コマンド (sqlcommand) の出力を PowerShell のコンソールに出力するにはどうすればよいですか?

    これが私が過去に行った方法です。これは、StandardOut と StandardError からのイベントを利用します。これらは非同期で実行されるため、出力を完全に制御できるわけではありませんが (いつ発生するかに関して)、必要なものに近いはずです。

    $SqlCommandArguments = @()
    $SqlCommandArguments += "-S $DbHost"
    $SqlCommandArguments += "-d $DbSchema"
    $SqlCommandArguments += "-Q `"do some crazy db change here`""
    ExecuteProcess -FileName "SqlCmd.exe" -CommandArguments $SqlCommandArguments -Verbose:$VerbosePreference
    
    function ExecuteProcess
    {
        [cmdletbinding()]
        param
        (
            [string]$FileName,
            [string[]]$CommandArguments
        )
    
        Write-Verbose "$FileName $CommandArguments"
    
        $startInfo = New-Object System.Diagnostics.ProcessStartInfo
        $startInfo.FileName = $FileName
        $startInfo.Arguments = $CommandArguments
        $startInfo.RedirectStandardError = $true
        $startInfo.RedirectStandardOutput = $true
        $startInfo.UseShellExecute = $false
        $startInfo.CreateNoWindow = $true
    
        $process = New-Object System.Diagnostics.Process
        $process.StartInfo = $startInfo
    
        $eventOutputDataReceived = Register-ObjectEvent -InputObject $process -EventName OutputDataReceived -MessageData $VerbosePreference -Action { 
            if ($($EventArgs.data))
            {
                Write-Verbose $EventArgs.data -verbose:$event.MessageData
            }
        }
    
        $global:standardError = New-Object System.Text.StringBuilder
        $eventErrorDataReceived = Register-ObjectEvent -InputObject $process -EventName ErrorDataReceived  -Action { 
            if ($($EventArgs.data))
            {
                $global:standardError.Append("$($EventArgs.data)`r`n")
                Write-Warning -message $EventArgs.data 
            }
        } 
    
        $process.Start() | Out-Null
    
        $process.BeginOutputReadLine()
        $process.BeginErrorReadLine()  
    
        $process.WaitForExit()
    
    
        Unregister-Event -SourceIdentifier $eventOutputDataReceived.Name 
        Unregister-Event -SourceIdentifier $eventErrorDataReceived.Name 
    
        $exitCode = $process.ExitCode
        if ($exitCode -ne 0) 
        {
            Write-Error $global:standardError.ToString()
            throw "$FileName Failed!"
        }
    }
    



    1. 致命的なエラー:jni.h:jPypeのインストール中にそのようなファイルまたはディレクトリはありません

    2. 複数のスレッドが制約されたセットで重複した更新を引き起こす可能性がありますか?

    3. MAGMIを使用したMagentoの一括インポート画像-画像は除外

    4. JSON_STORAGE_SIZE()–MySQLでJSONドキュメントのストレージサイズを検索する