使用回车 returns 将 powershell invoke-command 输出存储到 sql 服务器数据库

storing powershell invoke-command output to sql server database with carriage returns

我正在尝试使用 powershell invoke-command 命令行开关在远程机器上执行批处理命令,并且能够将输出输出到一个变量。但是,当我尝试将其保存到 sql 服务器数据库时,它会将内容存储为不带回车符的段落 returns.

有人可以建议我如何使用回车符 returns 将这些数据保存到数据库中,这样它就会是可读的格式吗?

示例代码:

$output = invoke-command -session $session -ScriptBlock {
    echo '<------starting batch------->'
    cd 'C:\temp\'    
    cmd /c 'dir'
    cmd /c 'hostname'
    echo '<------ending batch------>'
}    
$formatted_output = ($output | Out-String) -replace "(.`r`n)", "``r`n"
write-host $formatted_output

示例变量输出:

<------starting batch------->    
 Volume in drive C has no label.    
 Volume Serial Number is 0CE1-E926    

 Directory of C:\temp    

06/26/2017  03:17 PM    <DIR>          .    
06/26/2017  03:17 PM    <DIR>          ..    
08/10/2016  09:07 PM    <DIR>          Clt-Inst    
06/07/2016  04:31 PM        56,406,016 splunkforwarder-6.4.1-debde650d26e-x64-release.msi    
06/26/2017  02:44 PM        35,922,892 Windows6.0-KB968930-x64.msu    
               2 File(s)     92,328,908 bytes    
               3 Dir(s)  418,918,834,176 bytes free    
<servername>    
<------ending batch------>

注意:控制台中打印的输出确实有 CLRF 字符,但是当我将此变量值与数据库相同时,它保存为 pasragraph。这很难阅读。

But when I'm trying the save it to the sql server database it is storing the content as a paragraph without carriage returns.

很可能数据已按预期保存,但您正在使用 SSMS 查看数据。确保在 Query-->Options-->Results--Grid 下选择 "Retain CR/LF on copy or save" 选项。