激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - PowerShell - 使用 Powershell 來自動化 Linux、macOS 以及 Windows 流程

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

2021-11-23 22:28Linux中國Willy-peter Schaub PowerShell

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

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

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

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

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

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

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

  • 當你手動執行自動化流程超過一兩次
  • 當你需要經常地持續地執行自動化流程
  • 自動化任何可被自動化的

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

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

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

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

 

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

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

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

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

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

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

 

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

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

PowerShell 是一種開源的基于任務的腳本語言。它可以在 GitHub 上找到。它構建在 .NET 上,允許你自動化 Linux、macOS 和 Windows 流程。具有開發背景的用戶,特別是 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. }

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

  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%。

 

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

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

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

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

 

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

圖 4,措施,措施,措施

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

原文鏈接:https://linux.cn/article-14011-1.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中国大陆一级毛片 | 美国黄色毛片女人性生活片 | 国产精品91在线 | 久久国产综合视频 | 午夜精品毛片 | 亚洲国产视频网 | 羞羞视频免费网站含羞草 | 久久久青| 久久噜噜噜精品国产亚洲综合 | 成人免费一区二区三区 | 天天干导航 | 一级免费大片 | 亚洲av一级毛片特黄大片 | 欧洲精品视频在线观看 | a免费视频 | www久久艹| 国内精品久久久久久2021浪潮 | 黄色片网站免费在线观看 | 欧美日韩后 | av电影在线网 | 青青操精品 | 97中文| 羞羞视频一区二区 | 日本一区二区不卡高清 | 女人a级毛片| 亚洲精品久久久久久久久久久 | 黄色影院在线 | 久久人人av | 免费久久精品 | 亚州精品在线视频 | 日本在线观看视频网站 | 91九色免费视频 | 精品久久久久久久 | 自拍亚洲伦理 | 久久我不卡 | 成人片免费视频 | 免费观看9x视频网站在线观看 | 久久免费毛片 | 欧美成人一级片 | 性少妇videosexfreexx入片 | 1区2区3区国产 |