Это называется Scope
.
Variables
созданный в блоке может выжить только в этой итерации блока.
$A = "Hello"
While(1 -eq 1){
$B = Read-Host 'Type Name?'
"$A $B"
}
$A
навсегда будет Hello, потому что это было сделано за пределами
$B
изменится навсегда, потому что внутри Сфера Пока.
(Также потому, что каждый раз, когда вы звоните, когда вы в любом случае заменяете $ B хостом чтения) *
То, что вы хотите сделать, - это указать опцию ServerName и поместить переменную вне области while.
$CurrentServer = $Null
$CurrentService = $Null
do {
if(!($CurrentServer) -or $(Read-Host 'Change Server (Y,N)?') -eq "Y"){
$CurrentServer = Read-Host 'What is your ServerName?'
}
if(!($CurrentService) -or $(Read-Host 'Change Service (Y,N)?') -eq "Y"){
$CurrentService = Read-Host 'What is ServiceName?'
}
$userMenuChoice = Read-Host -Prompt @"
1. ServiceList
2. Service Status.
3. Stop Service.
4. Start Service.
5. Exit
Please Select Operation
"@
switch($userMenuChoice){
1{Get-Service -ComputerName $CurrentServer | select -property name,starttype}
2{gsv -cn $CurrentServer -Name "$CurrentService*" | Out-String}
3{Get-Service -Name "$CurrentService*" -ComputerName $CurrentServer | Stop-Service}
4{Get-Service -Name "$CurrentService*" -ComputerName $CurrentServer | Start-Service}
5{exit}
}
} while ( $userMenuChoice -ne 4 )
Линия
if(!($CurrentServer) -or $(Read-Host 'Change Server (Y,N)?') -eq "Y"){}
Позволяет вам сменить сервер и службу, если вы этого хотите, но также позволяет пропустить ее при необходимости.
Это говорит о том, что $CurrentServer
пусто ИЛИ, если $CurrentServer
имеет значение Спросить сервер изменений, Если сервер изменений равен Y, тогда запустите if