Slik tømmer bare bestemte innholdet fra skjermen?

stemmer
42
Function Test{
    while($true){
    write-host I want this to refresh every time
    Start-Sleep -Seconds 4
    cls
    }
}
Write-Host I want this to be at the screen always
Test

Er det en måte for meg å få dette gjort annet enn å sette den også inne i loop eller funksjon? I selve koden jeg ønsker å beholde noen utgang på toppen av skjermen for referanse (det kan ikke bli satt i funksjon), mens funksjonen trekker noen data og oppdateres hvert 4 sekunder. Her siden jeg bruker clsklarner det alt på skjermen som jeg ikke vil skal skje. Jeg trenger bare å fjerne utgang fra funksjonen.

Publisert på 25/07/2016 klokken 21:15
bruker
På andre språk...                            


2 svar

stemmer
1

Ville en fremdriftslinje være egnet? Den faktiske andelen er kanskje ikke relevant fordi loopen i eksempelet er uendelig, men det oppfører seg som ligner på det du beskriver:

Function Test{
   while ($true) {
      Write-Progress -Activity "I want this to be at the screen always" -Status "I want this to refresh every time"
      Start-Sleep -Seconds 4
   }
}
Write-Progress -Activity "I want this to be at the screen always"
Test
Svarte 25/07/2016 kl. 22:30
kilden bruker

stemmer
0

Hvis Write-Progress er ikke egnet da en funksjon ved hjelp av globale variabler kan fungere for deg:

Function Clear-HostCustom ($DisplayText)
{
    If ($DisplayText)
    {
        $global:DisplayTextGlobal = $DisplayText
    }
    Clear-Host
    Write-Host $global:DisplayTextGlobal
}
Function Test{
    while($true){
    write-host "I want this to refresh every time"
    Start-Sleep -Seconds 4
    Clear-HostCustom
    Start-Sleep -Seconds 1
    }
}
Clear-HostCustom "I want this to be at the screen always"
Test
Svarte 26/07/2016 kl. 01:21
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more