簡體   English   中英

如何在Powershell腳本中檢查功能依賴性。 避免多次運行同一功能

[英]How to check for functions dependency in powershell scripts. Avoid running the same function multiple times

在我的PowerShell腳本中-一個函數的輸出是另一個函數的輸入。
例如:直到函數ParseXml($ x)運行,函數CreateReport($ x)才能運行。 如果用戶在運行第一個函數之前直接運行第二個函數怎么辦。
如何檢查第一個功能是否已經運行以繼續第二個功能,即先運行第一個功能(生成txt文件),然后運行第二個功能? 如果第一個func已經運行,請不要重新運行它。
例如:假設我有一個具有2個函數的TestFunc.ps1文件,如下所示

$X = "C:\XmlPath\file1.xml"
Function ParseXml($X)
{
#Read xml and output contents in a txt file    
}

#This function should execute only after the function Parsexml($X) and if Pasrsexml() has run before and generated the output, it shouldnot be allowed to re-run here
Function CreateReport($T) 
{
#from the txtfile Create csv
}

根據此問題和您的其他問題, 如何在Powershell腳本中將參數化函數用作標志的別名? 您正在嘗試實現所謂的構建腳本。 不用發明輪子(實現任務依賴關系,觀察要運行一次的任務等),而是看一下一些已經實現的工具,例如psakeInvoke-Build 它們是為PowerShell設計的,並且可以完全滿足您的要求(運行指定的任務集,維護任務依賴性,一次運行任務等)。 當然,這些工具需要一點學習,但是從長遠來看,值得學習。

如果ParseXml函數輸出文件,則可以在CreateReport函數中使用Test-Path cmdlet Test-Path該文件是否存在:

如果存在,請繼續執行CreateReport函數,否則請在繼續之前調用ParseXml函數。

使用標志。 ParseXml函數中設置標志,並在CreateReport函數中進行檢查。 如果未設置該標志,則打印錯誤並退出,否則請運行報告代碼。 切記在完成該過程后清除該標志。

您可以使用標志變量。 對於更持久的標志,請考慮使用標志文件或在數據庫中設置標志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM