使用数组将数据导出到csv文件或通过电子邮件输出

时间:2014-04-16 16:41:33

标签: sql powershell

我有一个我写过的powershell脚本,它也可以正常工作。我现在遇到的问题是,最初的要求是将结果保存到数据库中,现在我也想通过电子邮件发送结果。我想到了几个选项,但发现它很难,现在我想到的一个简单方法是将结果导出为CSV然后将该CSV附加到电子邮件中。

下面的代码在我的循环中。

$sql = " INSERT INTO dbo.tb_checks ([ServerName],[Directory],[DirectoryFile] ,[FileCreationDate])  SELECT  '$ServerName', '$Filepath',  '$fileName', '$FileDate'"
Invoke-Sqlcmd2 -serverinstance $DBServer -database $Database -query $sql

SELECT  '$ServerName', '$Filepath',  '$fileName', '$FileDate' | Export-csv $Outfilename -append

生成CSV文件,但没有数据。

我想到的另一个想法是将数据存储在数组中,然后在电子邮件中循环/吐出数组的整个内容。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您的CSV为空的原因是因为您没有为它提供可以使用的数组。它会在你的脚本中使用哪些标题?它不知道,它只是随机扔东西。将最后一行更改为:

New-Object PSObject -Property @{Server=$ServerName;FilePath=$Filepath;FileName=$fileName;FileDate=$FileDate} | Export-csv $Outfilename -Append -NoTypeInformation

假设您的变量设置正确,它应该输出您想要的文件。

如果你想把它作为一个表并把它放在一个电子邮件中,在你的循环之前创建一个空数组,那么做一些像:

$LoopArray = @()
<start of loop>
$LoopArray += New-Object PSObject -Property @{Server=$ServerName;FilePath=$Filepath;FileName=$fileName;FileDate=$FileDate}
$LoopArray | Export-csv $Outfilename -Append -NoTypeInformation
<end of loop>

然后你就可以使用数组来存储CSV中的所有数据并将其注入电子邮件中。