我在powershell中編寫了這個腳本,但我沒有正確地執行某些操作(我正在嘗試學習self-taughtuwu)
這就是正在討論的劇本。
function Get-DesiredProcess {
$DesiredProcess=Read-Host "Welcome to de advanced task manager! Choose an action to do: 1. WUP (WindowsUpdate) 2. MDP (ProxyModification)"
Switch ($DesiredProcess)
{
WUP {$ChosenProcess=Install-WUpdate}
MDP {$ChosenProcess=Set-Proxy}
}
If ($DesiredProcess -eq $null) {
Write-Error "You must specify an action!"
return Get-DesiredProcess
}
Else {
Set-Variable -Name "DesiredProcess" -Value "ChosenProcess"
}
}
Get-DesiredProcess
Write-Output $DesiredProcess
Write-Output $ChosenProcess
最后兩個"Write-Output只用于測試它是否正確注冊了變量(擾流板,它沒有)
當Read-Host沒有被回答時,它應該輸出“youspecifyanaction!”但什么都不做:
Welcome to de advanced task manager! Choose an action to do: 1. WUP (WindowsUpdate) 2. MDP (ProxyModification):
PS C:\Users\user1\Documents\scriptsfiles>
當做出選擇時,應將變量與此部分保持一致:
Set-Variable -Name "DesiredProcess" -Value "ChosenProcess"
而不是直接執行choosen進程。。。
提前謝謝!
如果希望函數為函數外部定義的變量設置新值,請在函數內部使用作用域,因此
$ChosenProcess = 'Install-WUpdate'
-->$script:ChosenProcess = 'Install-WUpdate'
。然而,更容易理解的是讓函數輸出其他代碼可以處理的東西。在這種情況下,由于您既需要用戶輸入的內容,也需要為該輸入選擇的過程,因此我建議讓函數輸出一個同時具有以下兩個屬性的對象:
使用這個函數可以輸出如下內容
現在,下面的代碼可以簡單地作用于變量
$result.ChosenProcess
中的內容