Sql server 使用回车将powershell invoke命令输出存储到sql server数据库
我正在尝试使用powershell invoke command commandlet在远程计算机上执行批处理命令&能够获得变量的输出。但是,当我尝试将其保存到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
$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及更高版本。