Avatar billede hopir Novice
23. oktober 2020 - 11:17 Der er 3 kommentarer

Powershell, incrementing global variabel i scriptblock

Hejsa. Følgende funktion er en lille del af et større script.

Jeg kan ikke få $i til at opdatere en global variabel for hvert gennemløb. Det virker som om at scriptblokken ignorerer $i++


$i = 0

function Message {

        start-job -Name Col01 -InitializationScript{Import-Module RemoteDesktop} -ScriptBlock{$Users = Get-RDUserSession -ConnectionBroker $ActiveConnectionBroker -CollectionName "col01"

        foreach ($User in $Users) {

            Send-RDUserMessage -UnifiedSessionID $User.UnifiedSessionId -HostServer $User.HostServer -MessageTitle "Info" -MessageBody $using:message
            $global:i++
        }
    }
}
Avatar billede Slettet bruger
26. oktober 2020 - 11:13 #1
prøv at bruge $script:i++
fordi det kan være at du bruger $global:i i en anden sammenhæng, så for at være sikker, kan du holde dig indenfor det ene skript
Avatar billede hopir Novice
26. oktober 2020 - 13:05 #2
Jeg bruger ikke $global nogle steder andet end i det her du ser.. hvad jeg kan læse mig frem til, så har det noget at gøre med scoping.
Avatar billede Slettet bruger
26. oktober 2020 - 13:53 #3
ja - scoping

hvis du har et eller andet skript et sted, som også bruger $i, og skriptet er kørt/kører i baggrunden af det skript du har, så redigerer du en variable, som du ikke læser i dit skript
Derfor kan du prøve at ændre variablen i dit skript vha "$script:i"... eller du læser $global:i når dit skript er kørt færdig
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester