假設您是一位系統管理員,他使用PowerShell來管理他/她系統上的很多事情。從某個目錄將所有函數加載到PowerShell中
您可能已經編寫了很多功能,可以執行您經常需要檢查的功能。但是,如果你需要大量移動,大量使用不同的機器等,則必須一次又一次地重新輸入所有功能才能使用它們。我甚至必須這樣做,每次我退出並重新啓動PowerShell出於某種原因,因爲它不會記住這些函數...
我已經寫了一個函數來爲我做這件事。我在這裏發佈,因爲我想確保它是萬無一失的。函數本身存儲在allFunctions.ps1
中,這就是爲什麼我將它排除在代碼中的原因。
其基本思想是你有一個文件夾,你可以在其中存儲你所有的ps1文件,每個文件夾都包含一個函數。在PowerShell中,你去到該目錄,然後輸入:
. .\allFunctions.ps1
該腳本的內容是這樣的:
[string]$items = Get-ChildItem -Path . -Exclude allFunctions.ps1
$itemlist = $items.split(" ")
foreach($item in $itemlist)
{
. $item
}
該腳本將首先收集在你的目錄所有文件,這意味着所有非ps1文件,你也可能在那裏。 allFunctions.ps1將被排除。
然後我根據空間分割長字符串,這是常見的分隔符。然後我用Foreach循環遍歷它,每次將函數初始化爲PowerShell。
假設你有超過100個功能,你永遠不知道你需要哪些,哪些不需要?爲什麼不把他們全部輸入而不是挑剔?
所以我想知道,這裏可能會出現什麼問題?我希望這是非常安全的,因爲我可能會使用它很多。
他似乎喜歡在PS中使用字符串進行翻譯:) – Joey 2009-04-18 17:38:55
感謝您的幫助,您提到了一些好的一點。實際上,入侵的黑客可能會造成更多的傷害。 另外,約翰,這不是我喜歡PS中的字符串,我更喜歡設置變量類型,當用戶輸入一個字符串應該是的數字時,會拋出一個錯誤,而不是腳本仍然嘗試做某事用它。 – KdgDev 2009-04-18 17:41:59
Get-ChildItem將返回FileInfo/DirectoryInfo對象的集合。沒辦法,你可以嘗試在那裏使用數字。 – Joey 2009-04-18 17:43:46