極客學校:學習如何在powershell中使用作業

PowerShell有四種類型的作業—後臺作業、遠端作業、WMI作業和計劃作業。加入我們,瞭解它們是什麼以及如何使用它們。...

極客學校:學習如何在powershell中使用作業

PowerShell有四種類型的作業—後臺作業、遠端作業、WMI作業和計劃作業。加入我們,瞭解它們是什麼以及如何使用它們。

請務必閱讀本系列之前的文章:

  • 瞭解如何使用PowerShell自動化Windows
  • 學習在PowerShell中使用cmdlet
  • 學習如何在PowerShell中使用物件
  • 在PowerShell中學習格式化、過濾和比較
  • 學習在PowerShell中使用遠端處理
  • 使用PowerShell獲取計算機資訊
  • 在PowerShell中使用集合

整個星期請繼續關注本系列的其餘部分。

背景工作

到目前為止,我在PowerShell中向您展示的所有內容都是同步的,這意味著我們在shell中鍵入了一些內容,在該命令執行完畢之前,我們實際上做不了多少工作。這就是背景工作的用武之地。要啟動後臺作業,只需將指令碼塊傳遞給start-job cmdlet。

Start-Job –Name GetFileList –Scriptblock {Get-ChildItem C:\ –Recurse}

極客學校:學習如何在powershell中使用作業

現在,當指令碼塊在後臺執行時,我們可以在shell中自由地執行任何操作。

極客學校:學習如何在powershell中使用作業

啟動新作業時,PowerShell將建立表示該作業的新作業物件。透過執行get-Job cmdlet,可以隨時獲取所有作業的列表。

極客學校:學習如何在powershell中使用作業

作業物件告訴您作業的狀態。例如,在上面的螢幕截圖中,我們可以看到一個名為GetFileList的BackgroundJob仍在執行,但已經開始返回資料。如果在任何時候您決定作業已經運行了太長時間,您可以透過管道將其傳送到stop job來輕鬆地停止它。

Get-Job –Name GetFileList | Stop-Job

極客學校:學習如何在powershell中使用作業

然而,一旦你停止了一個作業,它接收到的任何資料直到你停止它的時候都是可用的。不過,有個問題。在PowerShell中,一旦收到作業的結果,它們就會被刪除。為了使它們保持不變,必須指定Receive–Job的keep開關引數。

Get-Job –Name GetFileList | Receive-Job –Keep

極客學校:學習如何在powershell中使用作業

一旦你完成了一項工作,最好的做法是刪除它。要刪除作業,只需將其透過管道傳送到remove-job cmdlet。

Get-Job –Name GetFileList | Remove-Job

這將從Get Job返回的作業列表中刪除它。

極客學校:學習如何在powershell中使用作業

遠端作業

幾節課之前,我們研究瞭如何使用遠端處理在遠端計算機上使用Invoke命令執行PowerShell命令,但是您知道也可以使用Invoke命令在後臺啟動遠端處理作業嗎?為此,只需在命令末尾新增–AsJob引數:

Invoke-Command -ComputerName Flash,Viper -Credential administrator -ScriptBlock {gci} –AsJob

極客學校:學習如何在powershell中使用作業

這是一個簡單的命令,現在應該已經執行完畢了,讓我們看看我們的作業狀態。

極客學校:學習如何在powershell中使用作業

嗯,看來失敗了。這是我第一次接觸到喬布斯。在PowerShell中建立任何型別的新作業時,它會為執行作業的每臺計算機建立一個父作業和一個子作業。當您使用Get-Job cmdlet時,它只顯示父作業,state屬性是最壞的情況,這意味著即使命令僅在一百臺計算機中的一臺計算機上執行失敗,父作業狀態也會顯示為failed。要檢視子作業列表,需要使用IncludeChildJob引數。

極客學校:學習如何在powershell中使用作業

如果你仔細看,你會發現這項工作確實只在一臺電腦上失敗了,這就把我們帶到了下一個問題。嘗試獲取作業的結果時,如果指定父作業的名稱或ID,PowerShell將返回所有子作業的資料。問題是,如果其中一個子作業出現錯誤,我們將得到一些紅色文字。

極客學校:學習如何在powershell中使用作業

有兩種方法可以解決這個問題。首先,如果您知道要為哪些計算機獲取結果,只需使用Recieve–Job cmdlet的ComputerName引數即可。

Get-Job –Id 3 | Receive-Job –Keep –ComputerName Viper

極客學校:學習如何在powershell中使用作業

或者,您可以使用特定子作業的作業id從該子作業獲取結果。

Get-Job -Id 3 –IncludeChildJob

極客學校:學習如何在powershell中使用作業

Get-Job -Id 5 | Receive-Job –Keep

極客學校:學習如何在powershell中使用作業

wmi作業

WMI作業與遠端作業非常相似,只需要將–AsJob引數新增到Get-WmiObject cmdlet。

極客學校:學習如何在powershell中使用作業

極客學校:學習如何在powershell中使用作業

不幸的是,這意味著它們也受到我在遠端作業部分中提到的相同問題的影響。

計劃的作業

我們研究的最後三種工作不是永續性的,這意味著它們只在當前會話中可用。基本上,這意味著如果您啟動一個作業,然後開啟另一個PowerShell控制檯並執行Get job,您將看不到任何作業。但是,回到您啟動作業的控制檯,您將能夠看到其狀態。這與持久的計劃作業不同。基本上,計劃作業是按計劃執行的指令碼塊。在過去,同樣的效果也可以透過使用Windows任務排程器來實現,而這正是引擎蓋下正在發生的事情。要建立新的計劃作業,請執行以下操作:

Register-ScheduledJob -Name GetEventLogs -ScriptBlock {Get-EventLog -LogName Security -Newest 100} -Trigger (New-JobTrigger -Daily -At 5pm) -ScheduledJobOption (New-ScheduledJobOption -RunElevated)

這個命令裡有很多東西,所以讓我們把它分解一下。

  • 首先,我們給計劃的作業命名為GetEventLogs。
  • 然後我們告訴它,當被觸發時,我們希望它執行指定指令碼塊的內容,該指令碼塊基本上獲取安全事件日誌的最新100個條目。
  • 接下來,我們指定一個觸發器。因為trigger引數接受一個trigger物件作為輸入,所以我們使用了一個附加命令來生成一個觸發器,該觸發器將在每天下午5點關閉。
  • 因為我們要處理事件日誌,所以需要以管理員身份執行,可以透過建立新的ScheduledJobOption物件並將其傳遞給ScheduledJobOption引數來指定。

極客學校:學習如何在powershell中使用作業

由於這是一種稍有不同的作業型別,因此還需要使用不同的命令來檢索計算機上所有計劃作業的列表。

Get-ScheduledJob

極客學校:學習如何在powershell中使用作業

就這些。

  • 發表於 2021-04-11 22:34
  • 閱讀 ( 53 )
  • 分類:網際網路

你可能感興趣的文章

如何在windows powershell中使用命令歷史記錄

Windows PowerShell具有內建的命令歷史記錄功能,可提供有關已執行命令的詳細資訊。與命令提示符一樣,PowerShell只記住當前會話的命令歷史記錄。 如何使用命令列緩衝區 相關:極客學校:學習如何用PowerShell自動化Windows PowerShel...

  • 發佈於 2021-04-08 03:50
  • 閲讀 ( 82 )

如何在windows中批次重新命名多個檔案

...以輕鬆地重新命名一個或多個檔案,但使用命令提示符或PowerShell,您還可以執行更多操作。再加上第三方重新命名工具,可能性是無窮的。讓我們看看每個選項及其工作原理。 在windows資源管理器中重新命名多個檔案 Windows資...

  • 發佈於 2021-04-08 21:05
  • 閲讀 ( 57 )

如何在windows上建立已安裝程式的列表

....1和7上執行此操作的幾種不同方法。 簡單的方法:使用powershell命令 相關:極客學校:學習如何用PowerShell自動化Windows PowerShell是Windows中最強大的工具之一,所以它當然可以做一些簡單的事情,比如列出你安裝的程式。事實上...

  • 發佈於 2021-04-09 18:20
  • 閲讀 ( 55 )

在任何作業系統上使用製表符完成可以更快地鍵入命令

...論您是在Linux上使用bashshell,在Windows上使用命令提示符或PowerShell,還是在macosx上使用終端視窗。 此功能可以極大地幫助您加快鍵入命令的速度。只需在鍵入命令、選項或檔名時單擊Tab,shell環境就會自動完成您鍵入的內容或向...

  • 發佈於 2021-04-11 07:17
  • 閲讀 ( 32 )

powershell與windows命令提示符的區別

Windows7增加了PowerShell,一種比命令提示符更強大的命令列shell和指令碼語言。自Windows7以來,PowerShell變得更加突出,它甚至成為Windows10的預設選擇。 PowerShell比傳統的命令提示符更復雜,但它也更強大。命令提示符明顯不如Linux...

  • 發佈於 2021-04-11 20:41
  • 閲讀 ( 89 )

如何建立一個測試實驗室,讓你可以跟隨極客學校(不破壞你的電腦)

我們的極客學校文章可能會變得相當複雜,沒有理由在你自己的臺式電腦上做大量瘋狂的事情。相反,你可以像我們一樣建立虛擬機器來進行所有測試。下面是如何做到這一點。 您甚至可以將多個虛擬機器連線在一起,因此只...

  • 發佈於 2021-04-11 21:51
  • 閲讀 ( 45 )

極客學校:寫你的第一個完整的powershell指令碼

...的計算機上一次啟動的時間。在上一次安裝Geek School for PowerShell時,我們將編寫一個可重用的PowerShell命令來完成同樣的任務。 請務必閱讀本系列之前的文章: 瞭解如何使用PowerShell自動化Windows 學習在PowerShell中使用cmdlet 學習如...

  • 發佈於 2021-04-11 22:17
  • 閲讀 ( 50 )

極客學校:學習如何擴充套件powershell

PowerShell為您提供了兩種擴充套件shell的方法。您可以使用管理單元,它是二進位制的,並且是用成熟的程式語言(如C#)開發的,也可以使用模組,它可以是二進位制的,也可以是基於指令碼的。 請務必閱讀本系列之前的文章...

  • 發佈於 2021-04-11 22:25
  • 閲讀 ( 70 )

極客學校:在powershell中使用集合

由於PowerShell基於.Net框架,並結合了各種其他技術,如WMI和CIM,因此實現同一目標的方法總是不止一種。快來加入我們,學習如何選擇最佳的方法來完成我們的任務。 請務必閱讀本系列之前的文章: 瞭解如何使用PowerShell自動...

  • 發佈於 2021-04-11 22:46
  • 閲讀 ( 42 )

極客學校:使用powershell獲取計算機資訊

...看一看。 請務必閱讀本系列之前的文章: 瞭解如何使用PowerShell自動化Windows 學習在PowerShell中使用cmdlet 學習如何在PowerShell中使用物件 在PowerShell中學習格式化、過濾和比較 學習在PowerShell中使用遠端處理 整個星期請繼續關注本...

  • 發佈於 2021-04-11 22:52
  • 閲讀 ( 47 )
Duke哈哈哈
Duke哈哈哈

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦