Invoke-RestMethod
или Invoke-WebRequest
появился только в 3 версии, а нормально работать стал с 4…Сейчас у меня идёт глобальный процесс перестройки моих GTD-принципов, но так как этот процесс реально глобальный, сейчас я расскажу только про один инструмент, который стал для меня незаменимым.
Итак, в одной из своих социальных сетей я уже упоминал про канбан-доску для задач kanboard, фанатом которой я всё больше становлюсь. На данный момент она является моим основным рабочим (от слова «на работе»!) таск-менеджером, скажу больше, я даже придумал сделать из него динамическую панель отображения текущих проблем с сервисами и службами («упал» интернет, «встала» почта и т.п.). Но про это всё наверное в отдельной статье, сейчас я хочу поделиться простыми примерами работы с kanboard посредством Powershell.
Так как kanboard достаточно продвинутый инструмент, он позволяет работать с собой через встроенное API, поэтому именно эту возможноть мы и будем эксплуатировать. К сожалению, в официальной документации нет примера на PoSh, а сам язык достаточно молодой1), чтобы просто найти подходящий пример работы. Но нет ничего невозможного. Ниже несколько примеров взаимодействия:
############################################################## # Simple PoSh-kanboard script # # api_docs: https://kanboard.net/documentation/api-json-rpc # ############################################################## $user = "jsonrpc" # default method, else read https://kanboard.net/documentation/api-authentication $pass = "your_kanboard_token" # your API-token (kanboard settings/api) $uri = 'http://your_kanboard/jsonrpc.php' # your kanboard url ## $secpasswd = ConvertTo-SecureString $pass -AsPlainText -Force $cred = New-Object System.Management.Automation.PSCredential ($user, $secpasswd) ## $json = @{ jsonrpc = "2.0" method = "getAllProjects" id = "1" } $json = $json | ConvertTo-Json ## $res = Invoke-RestMethod -Method Post -Uri $uri -Credential $cred -Body $json -ContentType 'application/json' $res.result | Sort-Object id | Select-Object -Property id,name
На выходе получим четкую иерархию проектов
id name -- ---- 1 Project 1 2 Project 2 3 Project 3 4 Project 4
В данном примере мы добавляем обязательный параметр, в котором определяем интересующий нас проект (из которого нам нужны колонки)
############################################################## # Simple PoSh-kanboard script # # api_docs: https://kanboard.net/documentation/api-json-rpc # ############################################################## $user = "jsonrpc" # default method, else read https://kanboard.net/documentation/api-authentication $pass = "your_kanboard_token" # your API-token (kanboard settings/api) $uri = 'http://your_kanboard/jsonrpc.php' # your kanboard url ## $secpasswd = ConvertTo-SecureString $pass -AsPlainText -Force $cred = New-Object System.Management.Automation.PSCredential ($user, $secpasswd) ## $json = @{ jsonrpc = "2.0" method = "getColumns" id = "1" params = @{ "project_id" = "1" } } $json = $json | ConvertTo-Json ## $res = Invoke-RestMethod -Method Post -Uri $uri -Credential $cred -Body $json -ContentType 'application/json' $res.result | Sort-Object id | Select-Object -Property id,title
На выходе получим четкую иерархию колонок
id title -- ----- 1 Ожидающие 2 Готовые 3 В процессе 4 Выполнено
Напоследок пример создания задачи. Параметры подробно расписывать не буду, там и так всё понятно.
############################################################## # Simple PoSh-kanboard script # # api_docs: https://kanboard.net/documentation/api-json-rpc # ############################################################## $user = "jsonrpc" # default method, else read https://kanboard.net/documentation/api-authentication $pass = "your_kanboard_token" # your API-token (kanboard settings/api) $uri = 'http://your_kanboard/jsonrpc.php' # your kanboard url ## $secpasswd = ConvertTo-SecureString $pass -AsPlainText -Force $cred = New-Object System.Management.Automation.PSCredential ($user, $secpasswd) ## $json = @{ jsonrpc = "2.0" method = "createTask" id = "1" params = @{ "title" = "Test Task" "project_id" = "1" "column_id" = "3" "creator_id" = "1" "color_id" = "red" } } $json = $json | ConvertTo-Json ## $res = Invoke-RestMethod -Method Post -Uri $uri -Credential $cred -Body $json -ContentType 'application/json' $res.result
На выходе мы получим только id созданной задачи. Больше нам ничего и не надо, идём и проверяем коррекность создания новой задачи.
На этом всё. Хотелось бы собраться силами и написать готовый модуль для работы с Kanboard на powershell, так я хоть как-то внесу свою лепту в развитие столь замечательного инструмента. Но это пока только в… планах.
Invoke-RestMethod
или Invoke-WebRequest
появился только в 3 версии, а нормально работать стал с 4…