第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

用于提高狀態(tài)行性能的 Powershell 作業(yè)

用于提高狀態(tài)行性能的 Powershell 作業(yè)

C#
HUH函數(shù) 2022-12-24 10:14:34
我正在開發(fā)自定義 powershell 狀態(tài)線,并實(shí)現(xiàn)了一些很酷的功能:電池監(jiān)控、wifi 監(jiān)控等。不幸的是,這些更新往往很慢,因?yàn)樗鼈冃枰{(diào)用 Get-NetAdapterStatistics、獲取 wmi 對象和其他非常緩慢的通話。我正在嘗試通過 start-job 生成子進(jìn)程以允許后臺(tái)輪詢和更新共享變量,但無法弄清楚如何執(zhí)行此操作。我找到的最好的替代品是一種 IPC(如此處所述:兩個(gè)單獨(dú)的 Powershell 進(jìn)程之間的管道傳輸),但如果可能的話,我更愿意堅(jiān)持使用傳統(tǒng)的共享變量。有沒有辦法做到這一點(diǎn)?我發(fā)現(xiàn)的最佳替代方法是將變量作為參數(shù)傳遞,但這不允許進(jìn)行輪詢。免責(zé)聲明,我知道這并不是 powershell 的真正設(shè)計(jì)目的,但我仍然想知道這是否可能?;蛘呤蔷帉憣⒎祷貭顟B(tài)行的 ac/c++ 二進(jìn)制文件的最佳選擇?寫入文件(這看起來可能很慢)?如果可以,或者如果您需要更多信息,請告訴我什么可能有效。謝謝你。更多信息:Start-Job -Name testJob -Script {        $testVar = "asdf"}Write-Host $testVar# should output asdf有什么辦法嗎?我正在嘗試做一些工作并返回一個(gè)變量。這怎么可能?我發(fā)現(xiàn)的唯一可能方法是:寫文件到磁盤,有點(diǎn)慢使用 IPC 管道:最大的缺點(diǎn)是它有點(diǎn)小故障。最重要的是,當(dāng)我關(guān)閉 powershell 窗口(因?yàn)檫@是一個(gè)狀態(tài)行)時(shí),我不知道如何關(guān)閉 IPC 管道,我最終得到一個(gè)“管道泄漏”,導(dǎo)致高 cpu 使用率和運(yùn)行的 powershell 進(jìn)程的背景。這至少不是直接寫入文件的后臺(tái)作業(yè)的情況。顯然,當(dāng)最后一個(gè)引用被刪除時(shí),管道應(yīng)該關(guān)閉,但后臺(tái)作業(yè)在它打開的情況下繼續(xù)運(yùn)行。這是因?yàn)?powershell 會(huì)話在等待與管道相關(guān)的內(nèi)容(等待管道連接、完成寫一行等)時(shí)將掛起到無法按 ctrl-c'd 的位置。謝謝,如果我可以添加更多信息,請告訴我。更新:我試過基本上使用空文件作為控制標(biāo)志(我認(rèn)為這比為每個(gè)設(shè)置解析一個(gè)文件要快),但我正在嘗試使用一個(gè)作業(yè)來返回 VCS 信息(這會(huì)更容易返回,并且快點(diǎn))。關(guān)于如何解決這個(gè)問題的任何想法?我很難過。注意:我標(biāo)記這個(gè) C# 是因?yàn)?powershell 使用 C# 的管道函數(shù),我希望有這方面知識(shí)的人能夠提供幫助。
查看完整描述

1 回答

?
揚(yáng)帆大魚

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊

Boe Prox多年前就此做了一篇出色的文章。他還使用PoshRSJob模塊對此進(jìn)行了擴(kuò)展。使用這個(gè)模塊可以很容易地處理這個(gè)問題。

#Create a synchronized hashtable

$sync = [hashtable]::Synchronized(@{

    Time = ''

    Stop = $false

    Updater = ''

})

#create 5 RSJobs

1..5 | Start-RSJob -ScriptBlock {

    param($sync) #accept $sync as a param

    $updater = [Guid]::NewGuid() #unique id per job

    while(-not $sync.Stop) { #run until told not to

        $sync.Time = Get-Date

        $sync.Updater = $updater

        start-sleep -Seconds 1

    }

} -ArgumentList $sync #pass $sync as a param

運(yùn)行這個(gè)會(huì)產(chǎn)生 5 個(gè)工作:


Id       Name                 State           HasMoreData  HasErrors    Command

--       ----                 -----           -----------  ---------    -------

1        Job1                 Running         False        False        ...

2        Job2                 Running         False        False        ...

3        Job3                 Running         False        False        ...

4        Job4                 Running         False        False        ...

5        Job5                 Running         False        False        ...

然后您可以檢查父進(jìn)程中的 $sync 并看到它不斷地從這些作業(yè)中更新。請注意,這些不僅僅是字符串表示,而是完整的對象。


PS C:\> $sync


Name     Value

----     -----

Time     4/22/2019 11:58:35 AM

Stop     False

Updater  9ab28c51-2941-4866-a064-165b1ceca673


PS C:\> $sync


Name     Value

----     -----

Time     4/22/2019 11:58:37 AM

Stop     False

Updater  113e78a8-1774-4cdf-9638-7235109f0a0d

終止我們設(shè)置的作業(yè)$sync.Stop = $true


PS C:\> Get-RSJob


Id       Name                 State           HasMoreData  HasErrors    Command

--       ----                 -----           -----------  ---------    -------

1        Job1                 Completed       False        False        ...

2        Job2                 Completed       False        False        ...

3        Job3                 Completed       False        False        ...

4        Job4                 Completed       False        False        ...

5        Job5                 Completed       False        False        ...


查看完整回答
反對 回復(fù) 2022-12-24
  • 1 回答
  • 0 關(guān)注
  • 115 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)