Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用回车将powershell invoke命令输出存储到sql server数据库_Sql Server_Sql Server 2008_Powershell_Powershell 2.0_Powershell Remoting - Fatal编程技术网

Sql server 使用回车将powershell invoke命令输出存储到sql server数据库

Sql server 使用回车将powershell invoke命令输出存储到sql server数据库,sql-server,sql-server-2008,powershell,powershell-2.0,powershell-remoting,Sql Server,Sql Server 2008,Powershell,Powershell 2.0,Powershell Remoting,我正在尝试使用powershell invoke command commandlet在远程计算机上执行批处理命令&能够获得变量的输出。但是,当我尝试将其保存到sql server数据库时,它将内容存储为一个段落,而不返回回车 有人能建议我如何将这些数据保存到带有回车符的数据库中,使其成为可读的格式吗 示例代码: $output = invoke-command -session $session -ScriptBlock { echo '<------starting batch

我正在尝试使用powershell invoke command commandlet在远程计算机上执行批处理命令&能够获得变量的输出。但是,当我尝试将其保存到sql server数据库时,它将内容存储为一个段落,而不返回回车

有人能建议我如何将这些数据保存到带有回车符的数据库中,使其成为可读的格式吗

示例代码:

$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)", "`$1`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------>
$output=invoke命令-session$session-ScriptBlock{
回声“
cd'C:\temp\n
cmd/c“dir”
cmd/c“主机名”
回声“
}    
$FORMATED_output=($output|Out String)-替换“(.r`n)”,“`1`r`n”
写入主机$U输出
样本变量输出:

$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)", "`$1`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------>

驱动器C中的卷没有标签。
卷序列号为0CE1-E926
C:\temp目录
2017年6月26日下午3:17。
2017年6月26日下午3:17。。
2016年10月8日09:07下午Clt Inst
2016年7月6日下午4:31 56406016 splunkforwarder-6.4.1-DEBD650D26E-x64-release.msi
2017年6月26日02:44下午35922892 Windows6.0-KB968930-x64.msu
2个文件92328908字节
3目录418918834176可用字节
注意:控制台中打印的输出具有CLRF字符,但当我将此变量值添加到数据库时,它将另存为pasragraph。这很难理解

但当我尝试将其保存到sql server数据库时 将内容存储为不带回车符的段落


数据可能按预期保存,但您正在使用SSMS查看数据。请确保在查询-->选项-->结果--网格下选择了“复制或保存时保留CR/LF”选项。

查看此选项是否适用于您(使用打印)我现在没有办法测试,因此很抱歉抛出未经验证的建议。这基本上表明断行是存储的,但读取数据的方法没有显示它们。顺便说一下:
$formatted_output=$output | Out String
足以创建一个多行字符串-
-replace“(.r`n)”,“`1`r`n”
是不允许的。您没有向我们显示换行符丢失的部分,但是@TySavercool的链接看起来很有希望。添加了用于将变量数据加载到sql server的代码块。我用的是非常直截了当的方法。你说得对。这种情况仅发生在SQL Server 2008 SSM中,而不是2012/2014 SSM中。我在2008/2012/2014年找不到“复制时保留CR/LF或保存”选项。看起来他们在2016版中引入了此设置。有什么方法可以在2008年的SSMS中设置此选项吗?@sqlcheckpoint,我认为MS在该选项可配置之前更改了SSMS行为几次,但我不记得确切的版本。截至本文撰写之时,SSMS的最新版本为17.1,可从免费下载。它支持SQL 2008及更高版本。