一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 97热在线| 美女脱了内裤让男桶爽 | 火影忍者羞羞 | 大伊香蕉精品二区视频在线 | 午夜爱情动作片P | 美日韩一区二区三区 | 国产色司机在线视频免费观看 | 青青91| 波多野结衣在线观看中文字幕 | 国产老太婆hd老头 | 国产美女极品免费视频 | 国产性色视频 | 国产精品酒店视频免费看 | 精品一区二区三区色花堂 | 52zfl宅福利yxpjw| 日韩在线一区二区 | 日韩亚洲人成在线 | 99视频在线免费 | china外卖员gay国产xnxx | 国内精品久久久久影院男同志 | 美女和男生搞基 | 天天翘| 国产无限免费观看黄网站 | 国产精品一区三区 | 成人在线视频在线观看 | 青青草国产青春综合久久 | 蜜桃视频一区二区三区四区 | 91亚洲视频在线观看 | 日韩手机在线观看 | 免费抽搐一进一出印度 | 亚洲激情欧美 | 无码人妻精品一区二区蜜桃在线看 | 色漫在线观看 | 洗濯屋し在线观看 | 91色视| 91亚洲精品国产自在现线 | 免费xxxx日本大片在线观看 | 免费369看片入口 | 碰91精品国产91久久婷婷 | 日韩亚洲欧美一区二区三区 | 四虎精品成人免费视频 |