你可以通过Process kudu API获取当前web app的进程,然后检查是否有与WebJob相关的进程(进程名),如果有则杀死该进程。
例如:
param(
[string]$webJobName,
[string]$userName,
[string]$password,
[string]$webAppName
)
$kuduApiAuthorisationToken="Basic {0}" -f [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $userName, $password)))
$kuduApiUrl="https://$webAppName.scm.azurewebsites.net/api/processes/"
$processes=Invoke-RestMethod -Uri $kuduApiUrl -Headers @{"Authorization"=$kuduApiAuthorisationToken;"If-Match"="*"} -Method GET
foreach($p in $processes){
if($p.name -eq $webJobName){
$killAPI="https://$webAppName.scm.azurewebsites.net/api/processes/$($p.id)"
Invoke-RestMethod -Uri $killAPI -Headers @{"Authorization"=$kuduApiAuthorisationToken;"If-Match"="*"} -Method DELETE
}
}
参数:-webJobName "XX" -userName "XX" -password "XX" -webAppName "XX"
注意:如果用户名中有$,如$test,可以指定用户名如-userName "`$test"
您可以手动或以编程方式从发布配置文件中获取用户名和密码:(在您的帖子中回答:Could any one help me how to stop and start azure webjobs through vsts)
关于将参数放入文件:
参数.json
[
{
"filepath": "data.csv",
"Cols": "Col1,Col2,Col3"
},
{
"filepath": "data2.csv",
"Cols": "Col1,Col6,Col7,Col8"
}
]
代码:
[object[]]$fileObj=Get-Content "parameter.json"|ConvertFrom-Json
foreach($fo in $fileObj){
}
更新:
Parameter.json:
{
"userName": "user1",
"password": "password1",
"webAppName": "webapp1",
"resourceGroup": "resourceGroup1",
"webJobs": [
{
"name": "abc",
"typeName": "continuous"
},
{
"name": "def",
"typeName": "continuou"
}
]
}
脚本:
[object]$paramObj=Get-Content "PowerShellModuleProject1\parameter2.json"|ConvertFrom-Json
$userName =$paramObj.userName
$password =$paramObj.password
$webAppName =$paramObj.webAppName
$resourceGroup=$paramObj.resourceGroup
[object[]]$webJobs=$paramObj.webJobs
foreach($wj in $webjobs){
if($wj.typeName -eq "continuous")
{
Invoke-AzureRmResourceAction -ResourceGroupName $resourceGroup -ResourceType Microsoft.Web/sites/ContinuousWebJobs -ResourceName "$webAppName/$($wj.name)" -Action start -ApiVersion 2015-08-01 -Force
Write-Host "continuous"
Write-Host $wj.name
}
else{
Invoke-AzureRmResourceAction -ResourceGroupName $resourceGroup -ResourceType Microsoft.Web/sites/TriggeredWebJobs -ResourceName "$webAppName/$($wj.name)" -Action run -ApiVersion 2015-08-01 -force
Write-Host "triggered"
Write-Host $wj.name
}
}