2017-05-29 31 views
-2

初心者。 PowerShellスクリプト(例:SQL:SELECT * FROM '[LOGFILEPATH]' WHERE Field1 LIKE '%LOGIN%')内の文字列に対してSQLクエリを実行するフラットファイルがあり、クエリがすべての行を返す場合、PSスクリプトは電子メールを送信する必要があります。私は後で追加する他の機能を持っていますが、今すぐPSに結果を渡してそれに応じて電子メールを送る方法を知る必要があります。ありがとう。SQL結果に基づいてPowershellから電子メールを送信

+0

[よくある質問](https://stackoverflow.com/help/how-to-ask)のヘルプページをご覧ください。これまでに何を試してみましたか、どのようなエラーや問題がありましたか? StackOverflowはコード作成サービスではありません。理想的には[最小限の、完全で検証可能な例]を提供する(https://stackoverflow.com/help/mcve) – gms0ulman

答えて

0

DBMailが設定されている場合は、Sql Server自体からメールを送信できます。手順sp_send_dbmailは、クエリ結果を添付ファイルとして送信できます。このように、

declare @mailTo varchar(64) = '[email protected]'; 
declare @subj varchar(64) = 'Subject for message'; 
declare @fName varchar(64) = concat('QueryResults-', convert(varchar(10), getdate(), 120), '.txt'); 
exec msdb.dbo.sp_send_dbmail 
@recipients = @mailTo, 
@subject = @subj, 
@query = N'select top(10) column1, column2 from [MyDatabase].[dbo].[SomeTable];', 
@attach_query_result_as_file = 1, 
@query_attachment_filename = @fName; 

このアプローチの主な制限は、結果がなくてもあなたにメールを送信することです。これを克服するには、ブロックifを追加することを検討してください。

declare @cnt int = 0; 
set @cnt = (select count(column1) from table where <some conditions apply>); 
if @cnt <> 0 
begin 
    exec msdb.dbo.sp_send_dbmail ... 
end 
0

、そのようにあなたは、テーブルをチェックし、Send-MailMessageでメールを送信するためにInvoke-SqlCmd2を使用することができます。 あなたはこのような何かを行うことができます起動-SqlCmd2を使用せずに、それを自分で書きたい場合は:あなたが最後に送信-はMailMessageのために必要な詳細で

$server = 'localhost\sqlexpress' 
$database = 'MyDB' 
$query = "SELECT * FROM '[LOGFILEPATH]' WHERE Field1 LIKE '%LOGIN%'" 

$connection = New-Object -TypeName System.Data.SqlClient.SqlConnection 
$dataset = New-Object -TypeName System.Data.DataSet 
$connection.ConnectionString = "Server=$server;Database=$database;Trusted_Connection=True;" 
$connection.Open() 
$command = $connection.CreateCommand() 
$command.CommandText = $query 
$adapter = New-Object -TypeName System.Data.SqlClient.SqlDataAdapter $command 
$rowCount = $adapter.Fill($dataset) 

if ($rowCount -gt 0) { 
    Send-MailMessage ... 
} 

塗りつぶし。

関連する問題