自动化批处理文件和PowerShell脚本执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化批处理文件和PowerShell脚本执行相关的知识,希望对你有一定的参考价值。

目标是自动执行3个文件:

  1. 运行selenium webdriver自动化测试套件的批处理文件。
  2. 生成测试报告的另一个批处理文件在步骤1中运行。
  3. 附加报告并发送电子邮件的PowerShell脚本。

如何自动执行这3个文件,以便在运行命令或执行文件时,所有3个文件都被执行?

这就是我的PowerShell的样子:

$Username = "";
$Password = "";
function Send-ToEmail([string]$email, [string]$attachmentpath) {
    $message = New-Object Net.Mail.MailMessage;
    $message.From = "c@c.com";
    $message.To.Add($email);
    $message.Subject = "abc";
    $message.Body = "abc";
    $attachment1 = New-Object Net.Mail.Attachment($attachmentpath);
    $message.Attachments.Add($attachment1);

    $smtp = New-Object Net.Mail.SmtpClient("build3", "25");
    $smtp.EnableSSL = $false;
    $smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
    $smtp.Send($message);

    Write-Host $smtp.EnableSSL;
    Write-Host "Mail Sent";
}

Send-ToEmail  -email "a@a.com" -attachmentpath "C:file1";
Send-ToEmail  -email "b@b.com" -attachmentpath "C:file1";

这是第一个批处理文件的样子:

FOR /F "TOKENS=2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET dd=%%A
FOR /F "TOKENS=2,3 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
FOR /F "TOKENS=2,3,4 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET yyyy=%%C
SET todaysdate=%yyyy%%mm%%dd%

start /d "nunitPATH" nunit3-console.exe "seleniumtestsuite dll PATH" --where:cat==SignUp --result="xmlreportPATH"

这是第二个批处理文件的样子:

start /d "exeFilePATH" ReportUnit.exe "folderPATH" 
答案

只需编写一个运行的批处理脚本

call script1.bat
call script2.bat
D:path	opowershell.exe -File script3.ps1

如果你需要异步:

start script1.bat
start script2.bat
start "" "D:path	opowershell.exe" "-File" "script3.ps1"

请注意powershell.exe路径之前的双引号对。

请注意,这假设您的设备至少具有powershell v2

但是,这个问题与here重复

以上是关于自动化批处理文件和PowerShell脚本执行的主要内容,如果未能解决你的问题,请参考以下文章

PowerShell命令与脚本(10)——脚本

如何在 PowerShell 中输出内容

使用PowerShell脚本的Azure SQL备份自动化

从 powershell 下载文件时,Invoke-WebRequest 进度变得无响应/暂停

Powershell编码原因导致部分代码不执行

Powershell编码原因导致部分代码不执行