Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.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
PowerShell中PowerBI RestAPIs中的错误处理_Powershell_Event Handling_Powerbi - Fatal编程技术网

PowerShell中PowerBI RestAPIs中的错误处理

PowerShell中PowerBI RestAPIs中的错误处理,powershell,event-handling,powerbi,Powershell,Event Handling,Powerbi,我正在尝试为我的PowerBIRESTAPI在PowerShell中遇到错误时创建一个自动电子邮件系统。基本上,我的PowerBI RestAPI有时会出现以下错误: 每当出现此错误时,我希望我的PowerShell脚本向我发送电子邮件。我目前正在测试以下代码,但它根本不起作用。理想情况下,当以下代码出现错误时,应打印“错误”。相反,它只是打印错误并停止。我想知道是否有人有使用PowerBIRESTAPI处理错误的经验 $User = "email@hotmail.com" $PW = "my

我正在尝试为我的PowerBIRESTAPI在PowerShell中遇到错误时创建一个自动电子邮件系统。基本上,我的PowerBI RestAPI有时会出现以下错误:

每当出现此错误时,我希望我的PowerShell脚本向我发送电子邮件。我目前正在测试以下代码,但它根本不起作用。理想情况下,当以下代码出现错误时,应打印“错误”。相反,它只是打印错误并停止。我想知道是否有人有使用PowerBIRESTAPI处理错误的经验

$User = "email@hotmail.com"
$PW = "mypw"

$SecPasswd = ConvertTo-SecureString $PW -AsPlainText -Force
$myCred = New-Object System.Management.Automation.PSCredential($User,$SecPasswd)

Connect-PowerBIServiceAccount -Credential $myCred

# 2. Refresh Dataset
try{
Invoke-PowerBIRestMethod -Url "datasets/2-cdaf123fa5/refreshes" -Method Post -Body '{"notifyOption": "MailOnFailure"}'
}

# 3. Check if there is an error
catch {
            $emailSmtpServer = "smtp.gmail.com"
            $emailSmtpServerPort = "587"
            $emailSmtpUser = "email@gmail.com"
            $emailSmtpPass = "password"

            $emailFrom = "email@gmail.com"
            $emailTo = "email@gmail.com"

            $emailMessage = New-Object System.Net.Mail.MailMessage( $emailFrom , $emailTo )
            $emailMessage.Subject = "subject" 
            $emailMessage.Body = "body"

            $SMTPClient = New-Object System.Net.Mail.SmtpClient( $emailSmtpServer , $emailSmtpServerPort )
            $SMTPClient.EnableSsl = $True
            $SMTPClient.Credentials = New-Object System.Net.NetworkCredential( $emailSmtpUser , $emailSmtpPass );
            $SMTPClient.Send( $emailMessage )
    }


处理这个问题的方法很少。您有一个非终止错误。如果我的解决方案不符合您的需要,您可以返回到上面的链接并搜索下面的qoutes

Try/Catch/Finally中添加的Try/Catch/Finally语句 PowerShell 2.0是处理终止错误的首选方法。 除非强制,否则它们不能用于处理非终止错误 这些错误将通过ErrorAction或 $ErrorActionPreference设置为停止

值Stop导致非终止错误被视为 而是终止错误,立即停止Cmdlet的 执行。这还使您能够在 Try/Catch或Trap语句,如本节后面所述

在脚本的顶部添加

$ErrorActionPreference = "Stop"

我希望这有帮助。

没有代码,我只能猜测正确的方法。这是互联网上最好的说明。嗨,亚伦,我已经提供了我的代码。但我不确定这是否会有帮助。真是太棒了。