我有一个我写过的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文件,但没有数据。
我想到的另一个想法是将数据存储在数组中,然后在电子邮件中循环/吐出数组的整个内容。
有人可以帮忙吗?
答案 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中的所有数据并将其注入电子邮件中。