自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用 Powershell 來自動化 Linux、macOS 以及 Windows 流程

系統(tǒng) Linux 自動化
自動化控制了那些手工的、費力的和容易出錯的過程,用運行自動化腳本的計算機代替了執(zhí)行手工任務的工程師。每個人都認同手工流程是健康的 DevOps 模式的敵人。

[[436338]]

自動化是 DevOps 的關鍵,但是,是否任何事都可以自動化?

自動化控制了那些手工的、費力的和容易出錯的過程,用運行自動化腳本的計算機代替了執(zhí)行手工任務的工程師。每個人都認同手工流程是健康的 DevOps 模式的敵人。一些人認為自動化不是一件好事,因為它取代了辛勤工作的工程師,而另一些人則意識到它提高了一致性、可靠性和效率,節(jié)省了時間,(最重要的是)使工程師能夠聰明地工作。

“DevOps 并不只是自動化或者基礎架構即代碼。” — Donovan Brown

自從上個世紀 80 年代早期開始使用自動化流程和工具鏈以來,每當我聽到或讀到“自動化一切”的建議時,我總是會激動不已。雖然在技術上可以實現(xiàn)一切自動化,但自動化是復雜的,并且需要付出開發(fā)、調(diào)試和維護方面的代價。如果你曾經(jīng)重新啟用一個許久不用的 Azure 資源管理器(ARM)模板或很久以前編寫的寶貴維護腳本,并期望它在幾個月或幾年之后仍然能夠完美地執(zhí)行,那么你就會明白,自動化就像任何其他代碼一樣,是脆弱的,需要持續(xù)的維護和培養(yǎng)。

所以,你應該對什么進行自動化并在何時進行自動化?

  • 當你手動執(zhí)行自動化流程超過一兩次
  • 當你需要經(jīng)常地持續(xù)地執(zhí)行自動化流程
  • 自動化任何可被自動化的

更重要的是,什么是你不應該自動化的?

  • 不要自動化一次性的流程,因為不值得投入,除非你會重新使用它作為參考文檔,并定期驗證它的可用性
  • 不要自動化高度不穩(wěn)定的流程,因為太復雜且昂貴
  • 不要自動化有問題的流程,在自動化前先修復它們

舉例來說,我的團隊使用我們通用的協(xié)作和工程系統(tǒng)來不斷的監(jiān)控數(shù)百個用戶活動。如果一個用戶在三個月或者更長時間處于非活動狀態(tài),并且這個用戶被分配了一個昂貴的許可證,我們就會重分配這個用戶一個功能少一些但是免費的許可證。

如圖 1 所示,這是一個沒有技術挑戰(zhàn)性的流程。這是一個令人費解且容易出錯的過程,尤其是在執(zhí)行上下文時與其他開發(fā)和運維任務切換時。

 

圖 1 手工流程切換用戶許可證

順帶的,這里有一個用簡單三步創(chuàng)建的價值流圖的例子:

  1. 可視化所有活動: 列出用戶、過濾用戶、重置許可證。
  2. 確定利益相關者,即運營和授權團隊。
  3. 措施:
* 總交貨時間(TLT)= 13 小時
* 總周期時間(TCT) = 1.5 小時
* 總效率百分比 = TLT/TCT*100 = 11.5%

如果你在人群流量大和容易看到的區(qū)域掛一個這些可視化的副本,比如在你的團隊的討論區(qū)、餐廳,或在去洗手間的路上,你將引發(fā)大量的討論和主動反饋。例如,從視覺上看,很明顯,手工任務是一種浪費,主要是由于漫長的流程等待時間造成的。

讓我們研究一個簡單的 PowerShell 腳本,它可以自動化該流程,如圖 2 所示,將總交付時間從 13 小時減少到 4 小時加 60 秒,并將總體效率從 11.5 提高到 12.75%。

 

圖 2 半自動化的 PowerShell 腳本切換用戶許可

PowerShell 是一種開源的基于任務的腳本語言。它可以在 GitHub 上找到。它構建在 .NET 上,允許你自動化 Linux、macOS 和 Windows 流程。具有開發(fā)背景的用戶,特別是 C# 用戶,將享受到 PowerShell 的全部好處。

下面的 PowerShell 腳本示例通過它的服務 REST API 與 Azure DevOps 進行通信。腳本結合了在圖 1 中的手動列表用戶和過濾用戶任務,識別了 Demo 組織中的所有兩個月沒有活動的、使用基本許可證或更昂貴的基本+測試許可證的用戶,并將用戶的詳細信息輸出到控制臺。很簡單!

首先,設置認證標頭和其他變量,這些變量將在稍后的初始化腳本中使用:

  1. param(
  2. [string] $orgName = "DEMO",
  3. [int] $months = "-2",
  4. [string] $patToken = "<PAT>"
  5. )
  6.  
  7. # Basic authentication header using the personal access token (PAT)
  8. $basicAuth = ("{0}:{1}" -f "",$patToken)
  9. $basicAuth = [System.Text.Encoding]::UTF8.GetBytes($basicAuth)
  10. $basicAuth = [System.Convert]::ToBase64String($basicAuth)
  11. $headers = @{Authorization=("Basic {0}" -f $basicAuth)}
  12.  
  13. # REST API Request to get all entitlements
  14. $request_GetEntitlements = "https://vsaex.dev.azure.com/" + $orgName + "/_apis/userentitlements?top=10000&api-version=5.1-preview.2";
  15.  
  16. # Initialize data variables
  17. $members = New-Object System.Collections.ArrayList
  18. [int] $count = 0;
  19. [string] $basic = "Basic";
  20. [string] $basicTest = "Basic + Test Plans";

接下來,使用此腳本查詢所有授權,以識別不活動用戶:

  1. # Send the REST API request and initialize the members array list.
  2. $response = Invoke-RestMethod -Uri $request_GetEntitlements -headers $headers -Method Get
  3. $response.items | ForEach-Object { $members.add($_.id) | out-null }
  4.  
  5. # Iterate through all user entitlements
  6. $response.items | ForEach-Object {
  7. $name = [string]$_.user.displayName;
  8. $date = [DateTime]$_.lastAccessedDate;
  9. $expired = Get-Date;
  10. $expired = $expired.AddMonths($months);
  11. $license = [string]$_.accessLevel.AccountLicenseType;
  12. $licenseName = [string]$_.accessLevel.LicenseDisplayName;
  13. $count++;
  14.  
  15. if ( $expired -gt $date ) {
  16.  
  17. # Ignore users who have NEVER or NOT YET ACTIVATED their license
  18. if ( $date.Year -eq 1 ) {
  19. Write-Host " **INACTIVE** " " Name: " $name " Last Access: " $date "License: " $licenseName
  20. }
  21. # Look for BASIC license
  22. elseif ( $licenseName -eq $basic ) {
  23. Write-Host " **INACTIVE** " " Name: " $name " Last Access: " $date "License: " $licenseName
  24. }
  25. # Look for BASIC + TEST license
  26. elseif ( $licenseName -eq $basicTest ) {
  27. Write-Host " **INACTIVE** " " Name: " $name " Last Access: " $date "License: " $licenseName
  28. }
  29. }
  30. }

當你運行腳本時,你將得到以下輸出,你可以將其轉發(fā)給授權團隊,以重置用戶許可證:

  1. **INACTIVE** Name: Demo1 Last Access: 2019/09/06 11:01:26 AM License: Basic
  2. **INACTIVE** Name: Demo2 Last Access: 2019/06/04 08:53:15 AM License: Basic
  3. **INACTIVE** Name: Demo3 Last Access: 2019/09/26 12:54:57 PM License: Basic
  4. **INACTIVE** Name: Demo4 Last Access: 2019/06/07 12:03:18 PM License: Basic
  5. **INACTIVE** Name: Demo5 Last Access: 2019/07/18 10:35:11 AM License: Basic
  6. **INACTIVE** Name: Demo6 Last Access: 2019/10/03 09:21:20 AM License: Basic
  7. **INACTIVE** Name: Demo7 Last Access: 2019/10/02 11:45:55 AM License: Basic
  8. **INACTIVE** Name: Demo8 Last Access: 2019/09/20 01:36:29 PM License: Basic + Test Plans
  9. **INACTIVE** Name: Demo9 Last Access: 2019/08/28 10:58:22 AM License: Basic

如果你將最后一步自動化,自動將用戶許可設置為一個自由的利益相關方許可,如圖3所示,你可以進一步將總體交付時間減少到65秒,并將總體效率提高到77%。

 

圖 3 完全自動化的基于 Powershell 的流程來切換用戶許可證。

這個 PowerShell 腳本的核心價值不僅在于能夠實現(xiàn) 自動化,還在于能夠 定期、持續(xù) 和 快速地 執(zhí)行這個流程。進一步的改進是使用 Azure 管道等調(diào)度器每周或每天觸發(fā)腳本,但我將把程序化的許可證重置和腳本調(diào)度保留在未來的文章中。

這里有一個圖表,可以直觀地看到進展情況:

 

圖 4,措施,措施,措施

 

我希望你能喜歡這個簡短的關于自動化、PowerShell、REST API 和價值流圖的介紹。

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2014-03-11 11:10:10

PowerShell自動化腳本

2013-08-28 10:38:01

2014-03-11 11:03:17

自動化腳本PowerShell

2020-04-29 11:28:54

智能自動化機器人流程自動化AI

2012-05-16 11:11:02

PowershellNIC PCI

2012-03-02 15:27:50

PowershellPCI總線

2016-08-24 13:23:05

FabricSSHLinux

2021-05-27 08:00:00

自動化機器人工具

2014-06-26 09:23:34

2021-04-28 16:49:27

自動化設備制藥

2024-07-04 17:34:48

RPAAI驅動

2009-08-27 11:35:45

ibmdw云計算

2022-08-30 19:14:31

LinuxBash

2009-07-16 17:06:23

Windows Emb

2013-09-03 09:58:51

Web前端

2023-01-04 13:41:23

RPA自動化機器人

2022-03-07 11:09:36

自動化企業(yè)技術

2017-12-17 21:58:18

2022-03-30 09:43:19

jscodeshif自動化重構開發(fā)

2021-04-26 15:07:05

數(shù)字化轉型IT技術
點贊
收藏

51CTO技術棧公眾號