Använda aktivitetssekvensvariabler i Configuration Manager

Gäller för: Konfigurationshanteraren (current branch)

Aktivitetssekvensmotorn i os-distributionsfunktionen i Configuration Manager använder många variabler för att styra dess beteenden. Använd dessa variabler för att:

  • Ange villkor för steg
  • Ändra beteenden för specifika steg
  • Använda i skript för mer komplexa åtgärder

En referens för alla tillgängliga aktivitetssekvensvariabler finns i Aktivitetssekvensvariabler.

Typer av variabler

Det finns flera typer av variabler:

Inbyggda variabler

Inbyggda variabler ger information om miljön där aktivitetssekvensen körs. Deras värden är tillgängliga i hela aktivitetssekvensen. Vanligtvis initierar aktivitetssekvensmotorn inbyggda variabler innan den kör några steg.

Är till exempel _SMSTSLogPath en miljövariabel som anger sökvägen till vilken Configuration Manager komponenter skriver loggfiler. Alla aktivitetssekvenssteg har åtkomst till den här miljövariabeln.

Aktivitetssekvensen utvärderar några variabler före varje steg. Visar till exempel _SMSTSCurrentActionName namnet på det aktuella steget.

Åtgärdsvariabler

Aktivitetssekvensåtgärdsvariabler anger konfigurationsinställningar som ett enda aktivitetssekvenssteg använder. Som standard initierar steget inställningarna innan det körs. De här inställningarna är endast tillgängliga när det associerade aktivitetssekvenssteget körs. Aktivitetssekvensen lägger till värdet för åtgärdsvariabeln i miljön innan steget körs. Sedan tar den bort värdet från miljön efter att steget har körts.

Du kan till exempel lägga till steget Kör kommandorad i en aktivitetssekvens. Det här steget innehåller en Start In-egenskap . Aktivitetssekvensen lagrar ett standardvärde för den här egenskapen som variabel.WorkingDirectory Aktivitetssekvensen initierar det här värdet innan kommandoradssteget Kör körs. När det här steget körs får du åtkomst till egenskapsvärdet Start i från WorkingDirectory värdet. När steget har slutförts tar aktivitetssekvensen bort värdet för variabeln WorkingDirectory från miljön. Om aktivitetssekvensen innehåller ytterligare ett körningskommandoradssteg initieras en ny WorkingDirectory variabel. Då anger aktivitetssekvensen variabeln till startvärdet för det aktuella steget. Mer information finns i WorkingDirectory.

Standardvärdet för en åtgärdsvariabel finns när steget körs. Om du anger ett nytt värde är det tillgängligt för flera steg i aktivitetssekvensen. Om du åsidosätter ett standardvärde finns det nya värdet kvar i miljön. Det här nya värdet åsidosätter standardvärdet för andra steg i aktivitetssekvensen. Du kan till exempel lägga till steget Ange aktivitetssekvensvariabel som det första steget i aktivitetssekvensen. Det här steget anger variabeln WorkingDirectory till C:\. Alla körningskommandoradssteg i aktivitetssekvensen använder det nya startkatalogvärdet.

Vissa aktivitetssekvenssteg markerar vissa åtgärdsvariabler som utdata. Steg senare i aktivitetssekvensen läser dessa utdatavariabler.

Obs!

Alla aktivitetssekvenssteg har inte åtgärdsvariabler. Även om det till exempel finns variabler som är associerade med åtgärden Aktivera BitLocker finns det inga variabler associerade med åtgärden Inaktivera BitLocker .

Anpassade variabler

Dessa variabler är alla variabler som Configuration Manager inte skapar. Initiera dina egna variabler som ska användas som villkor, i kommandorader eller i skript.

När du anger ett namn för en ny aktivitetssekvensvariabel följer du dessa riktlinjer:

  • Namnet på aktivitetssekvensvariabeln kan innehålla bokstäver, siffror, understreck (_) och ett bindestreck (-).

  • Namn på aktivitetssekvensvariabler har en minsta längd på ett tecken och en maximal längd på 256 tecken.

  • Användardefinierade variabler måste börja med en bokstav (A-Z eller a-z).

  • Användardefinierade variabelnamn kan inte börja med understreckstecknet. Endast skrivskyddade aktivitetssekvensvariabler föregås av understreckstecknet.

  • Namn på aktivitetssekvensvariabler är inte skiftlägeskänsliga. Och är till exempel OSDVARosdvar samma aktivitetssekvensvariabel.

  • Aktivitetssekvensvariabelnamn får inte börja eller sluta med ett blanksteg. De kan inte heller ha inbäddade blanksteg. Aktivitetssekvensen ignorerar blanksteg i början eller slutet av ett variabelnamn.

Det finns ingen angivet gräns för hur många aktivitetssekvensvariabler du kan skapa. Antalet variabler begränsas dock av storleken på aktivitetssekvensmiljön. Den totala storleksgränsen för aktivitetssekvensmiljön är 8 kB. Mer information finns i Minska storleken på aktivitetssekvensprincipen.

Skrivskyddade variabler

Du kan inte ändra värdet för vissa variabler, som är skrivskyddade. Vanligtvis börjar namnet med ett understreck (_). Aktivitetssekvensen använder dem för sina åtgärder. Skrivskyddade variabler visas i aktivitetssekvensmiljön.

Dessa variabler är användbara i skript eller kommandorader. Du kan till exempel köra en kommandorad och skicka utdata till en loggfil i _SMSTSLogPath med de andra loggfilerna.

Obs!

Skrivskyddade aktivitetssekvensvariabler kan läsas av steg i en aktivitetssekvens, men de kan inte anges. Använd till exempel en skrivskyddad variabel som en del av kommandoraden för ett körningskommandoradssteg . Du kan inte ange en skrivskyddad variabel med hjälp av steget Ange aktivitetssekvensvariabel .

Matrisvariabler

Aktivitetssekvensen lagrar vissa variabler som en matris. Varje element i matrisen representerar inställningarna för ett enda objekt. Använd dessa variabler när en enhet har fler än ett objekt att konfigurera. Följande aktivitetssekvenssteg använder matrisvariabler:

Så här anger du variabler

För anpassade variabler eller variabler som inte är skrivskyddade finns det flera metoder för att initiera och ange värdet för variabeln:

Ta bort en variabel från miljön med samma metoder som när du skapar en variabel. Om du vill ta bort en variabel anger du variabelvärdet till en tom sträng.

Du kan kombinera metoder för att ange en aktivitetssekvensvariabel till olika värden för samma sekvens. Ange till exempel standardvärdena med hjälp av aktivitetssekvensredigeraren och ange sedan anpassade värden med hjälp av ett skript.

Om du anger samma variabel med olika metoder använder aktivitetssekvensmotorn följande ordning:

  1. Den utvärderar samlingsvariabler först.

  2. Enhetsspecifika variabler åsidosätter samma variabeluppsättning i en samling.

  3. Variabler som anges av en metod under aktivitetssekvensen har företräde framför samlings- eller enhetsvariabler.

Allmänna begränsningar för aktivitetssekvensvariabelvärden

  • Aktivitetssekvensvariabelvärden får inte vara fler än 4 000 tecken.

  • Du kan inte ändra en skrivskyddad aktivitetssekvensvariabel. Skrivskyddade variabler har namn som börjar med ett understreck (_).

  • Aktivitetssekvensvariabelvärden kan vara skiftlägeskänsliga beroende på värdets användning. I de flesta fall är aktivitetssekvensvariabelvärden inte skiftlägeskänsliga. En variabel som innehåller ett lösenord är skiftlägeskänslig.

Ange aktivitetssekvensvariabel

Använd det här steget i aktivitetssekvensen för att ange en enskild variabel till ett enda värde.

Mer information finns i Ange aktivitetssekvensvariabel.

Ange dynamiska variabler

Använd det här steget i aktivitetssekvensen för att ange en eller flera aktivitetssekvensvariabler. Du definierar regler i det här steget för att avgöra vilka variabler och värden som ska användas.

Mer information finns i Ange dynamiska variabler.

Kör PowerShell-skript

Använd det här steget i aktivitetssekvensen för att använda ett PowerShell-skript för att ange en aktivitetssekvensvariabel.

Du kan ange ett skriptnamn från ett paket eller ange ett PowerShell-skript direkt i steget. Använd sedan egenskapen step till Output to task sequence variable (Utdata till aktivitetssekvensvariabel) för att spara skriptutdata till en anpassad aktivitetssekvensvariabel.

Mer information om det här steget finns i Kör PowerShell-skript.

Obs!

Du kan också använda ett PowerShell-skript för att ange en eller flera variabler med TSEnvironment-objektet . Mer information finns i Använda variabler i en aktivitetssekvens som körs i Configuration Manager SDK.

Exempelscenario med steget Kör PowerShell-skript

Din miljö har användare i flera länder/regioner, så du vill fråga os-språket för att ange som ett villkor för flera språkspecifika Tillämpa OS-steg .

  1. Lägg till en instans av Kör PowerShell-skriptet i aktivitetssekvensen innan du använder OS-stegen .

  2. Använd alternativet för att ange ett PowerShell-skript för att ange följande kommando:

    (Get-Culture).TwoLetterISOLanguageName
    

    Mer information om cmdleten finns i Get-Culture. Mer information om iso-språknamn med två bokstäver finns i Lista över ISO 639-1-koder.

  3. För alternativet Utdata till aktivitetssekvensvariabeln anger du CurrentOSLanguage.

    Skärmbild av exempel på steget Kör PowerShell-skript

  4. I steget Tillämpa operativsystem för den engelska språkavbildningen skapar du följande villkor: Task Sequence Variable CurrentOSLanguage equals "en"

    Skärmbild av exempelvillkoret i steget Tillämpa operativsystem

    Tips

    Mer information om hur du skapar ett villkor i ett steg finns i Så här kommer du åt variabler – stegvillkor.

  5. Spara och distribuera aktivitetssekvensen.

När steget Kör PowerShell-skript körs på en enhet med den engelska versionen av Windows returnerar kommandot värdet en. Värdet sparas sedan i den anpassade variabeln. När steget Tillämpa operativsystem för den engelskspråkiga avbildningen körs på samma enhet utvärderas villkoret till sant. Om du har flera instanser av steget Tillämpa operativsystem för olika språk kör aktivitetssekvensen dynamiskt det steg som matchar OS-språket.

Samlings- och enhetsvariabler

Du kan definiera anpassade aktivitetssekvensvariabler för enheter och samlingar. Variabler som du definierar för en enhet kallas aktivitetssekvensvariabler per enhet. Variabler som definierats för en samling kallas aktivitetssekvensvariabler per samling. Om det uppstår en konflikt har variabler per enhet företräde framför variabler per samling. Det här beteendet innebär att aktivitetssekvensvariabler som tilldelas till en specifik enhet automatiskt har högre prioritet än variabler som tilldelas till samlingen som innehåller enheten.

Enheten XYZ är till exempel medlem i samlingen ABC. Du tilldelar MyVariable till samlingen ABC med värdet 1. Du tilldelar också MyVariable till enheten XYZ med värdet 2. Variabeln som har tilldelats XYZ har högre prioritet än variabeln som har tilldelats samlingen ABC. När en aktivitetssekvens med den här variabeln körs på XYZ har MyVariable värdet 2.

Du kan dölja variabler per enhet och per samling så att de inte visas i Configuration Manager-konsolen. När du använder alternativet Visa inte det här värdet i Configuration Manager-konsolen visas inte värdet för variabeln i konsolen. Loggfilen för aktivitetssekvensen (smsts.log) eller felsökaren för aktivitetssekvensen visar inte heller variabelvärdet. Variabeln kan fortfarande användas av aktivitetssekvensen när den körs. Om du inte längre vill att dessa variabler ska döljas tar du bort dem först. Definiera sedan om variablerna utan att välja alternativet att dölja dem.

Varning

Om du inkluderar variabler i kommandoradsstegets kommandorad visar aktivitetssekvensloggfilen den fullständiga kommandoraden inklusive variabelvärdena. Om du vill förhindra att potentiellt känsliga data visas i loggfilen anger du aktivitetssekvensvariabeln OSDDoNotLogCommand till TRUE.

Du kan hantera variabler per enhet på en primär plats eller på en central administrationsplats. Configuration Manager stöder inte fler än 1 000 tilldelade variabler för en enhet.

Viktigt

Tänk på följande när du använder variabler per samling för aktivitetssekvenser:

  • Ändringar i samlingar replikeras alltid i hela hierarkin. Alla ändringar som du gör i samlingsvariabler gäller inte bara för medlemmar på den aktuella webbplatsen, utan för alla medlemmar i samlingen i hela hierarkin.

  • När du tar bort en samling tar den här åtgärden även bort de aktivitetssekvensvariabler som du har konfigurerat för samlingen.

Skapa aktivitetssekvensvariabler för en enhet

  1. I Configuration Manager-konsolen går du till arbetsytan Tillgångar och efterlevnad och väljer noden Enheter.

  2. Välj målenheten och välj Egenskaper.

  3. I dialogrutan Egenskaper växlar du till fliken Variabler .

  4. För varje variabel som du vill skapa väljer du ikonen Ny . Ange namn och värde för aktivitetssekvensvariabeln. Om du vill dölja variabeln så att den inte visas i Configuration Manager-konsolen väljer du alternativet Visa inte det här värdet i Configuration Manager-konsolen.

  5. När du har lagt till alla variabler i enhetsegenskaperna väljer du OK.

Skapa aktivitetssekvensvariabler för en samling

  1. I Configuration Manager-konsolen går du till arbetsytan Tillgångar och efterlevnad och väljer noden Enhetssamlingar. Välj målsamlingen och välj Egenskaper.

  2. I dialogrutan Egenskaper växlar du till fliken Samlingsvariabler .

  3. För varje variabel som du vill skapa väljer du ikonen Ny . Ange namn och värde för aktivitetssekvensvariabeln. Om du vill dölja variabeln så att den inte visas i Configuration Manager-konsolen väljer du alternativet Visa inte det här värdet i Configuration Manager-konsolen.

  4. Du kan också ange prioriteten för Configuration Manager som ska användas när aktivitetssekvensvariablerna utvärderas.

  5. När du har lagt till alla variabler i samlingsegenskaperna väljer du OK.

COM-objekt för TSEnvironment

Om du vill arbeta med variabler från ett skript använder du TSEnvironment-objektet .

Mer information finns i Använda variabler i en aktivitetssekvens som körs i Configuration Manager SDK.

Förinläsningskommando

Förinläsningskommandot är ett skript eller en körbar fil som körs i Windows PE innan användaren väljer aktivitetssekvensen. Förinläsningskommandot kan fråga en variabel eller be användaren om information och sedan spara den i miljön. Använd COM-objektet TSEnvironment för att läsa och skriva variabler från förinläsningskommandot.

Mer information finns i Förinläsningskommandon för aktivitetssekvensmedia.

Aktivitetssekvensguiden

När du har valt en aktivitetssekvens i fönstret Aktivitetssekvensguiden innehåller sidan för att redigera aktivitetssekvensvariabler en redigera-knapp . Du kan använda kortkommandon som är tillgängliga för att redigera variablerna. Den här ändringen hjälper till i fall där en mus inte är tillgänglig.

Aktivitetssekvensmedieguiden

Ange variabler för aktivitetssekvenser som körs från media. När du använder media för att distribuera operativsystemet lägger du till aktivitetssekvensvariablerna och anger deras värden när du skapar mediet. Variablerna och deras värden lagras på mediet.

Obs!

Aktivitetssekvenser lagras på fristående media. Men alla andra typer av media, till exempel förberedda medier, hämtar aktivitetssekvensen från en hanteringsplats.

När du kör en aktivitetssekvens från media kan du lägga till en variabel på sidan Anpassning i guiden.

Använd medievariablerna i stället för variabler per samling eller per dator. Om aktivitetssekvensen körs från media gäller inte variabler per dator och per samling och används inte.

Tips

Aktivitetssekvensen skriver paket-ID:t och förinläsningskommandoraden till filen CreateTSMedia.log på datorn som kör Configuration Manager-konsolen. Den här loggfilen innehåller värdet för alla aktivitetssekvensvariabler. Granska den här loggfilen för att verifiera värdet för aktivitetssekvensvariablerna.

Mer information finns i Skapa aktivitetssekvensmedium.

Så här kommer du åt variabler

När du har angett variabeln och dess värde med hjälp av någon av metoderna från föregående avsnitt använder du den i dina aktivitetssekvenser. Du kan till exempel komma åt standardvärden för inbyggda aktivitetssekvensvariabler eller göra ett steg villkorat av värdet för en variabel.

Använd följande metoder för att komma åt variabelvärden i aktivitetssekvensmiljön:

Använd i ett steg

Ange ett variabelvärde för en inställning i ett aktivitetssekvenssteg. Redigera steget i aktivitetssekvensredigeraren och ange variabelnamnet som fältvärde. Omge variabelnamnet i procenttecken (%).

Använd till exempel variabelnamnet som en del av kommandoradsfältet i steget Kör kommandorad . Följande kommandorad skriver datornamnet till en textfil.

cmd.exe /c echo %_SMSTSMachineName% > C:\File.txt

Stegvillkor

Använd inbyggda eller anpassade aktivitetssekvensvariabler som en del av ett villkor i ett steg eller en grupp. Aktivitetssekvensen utvärderar variabelvärdet innan det kör steget eller gruppen.

Utför följande steg för att lägga till ett villkor som utvärderar ett variabelvärde:

  1. I aktivitetssekvensredigeraren väljer du det steg eller den grupp som du vill lägga till villkoret i.

  2. Växla till fliken Alternativ för steget eller gruppen. Klicka på Lägg till villkor och välj Aktivitetssekvensvariabel.

  3. I dialogrutan Aktivitetssekvensvariabel anger du följande inställningar:

    • Variabel: Namnet på variabeln. Till exempel _SMSTSInWinPE.

    • Villkor: Villkoret för att utvärdera variabelvärdet. Följande villkor är tillgängliga:

      • Finns
      • Finns inte
      • Motsvarar
      • Inte lika med
      • Större än
      • Större än eller lika med
      • Mindre än
      • Mindre än eller lika med
      • Like (stöder jokertecken för * och ?)
      • Inte som (version 2103 eller senare)
    • Värde: Värdet för variabeln som ska kontrolleras. Till exempel false.

De tre exemplen ovan utgör ett vanligt villkor för att testa om aktivitetssekvensen körs från en startavbildning i Windows PE:

Aktivitetssekvensvariabel_SMSTSInWinPE equals "false"

Se det här villkoret i gruppen Avbilda filer och inställningar i standardmallen för aktivitetssekvens för att installera en befintlig OS-avbildning.

Mer information om villkor finns i Aktivitetssekvensredigeraren – Villkor.

Anpassat skript

Läs- och skrivvariabler med hjälp av Microsoft.SMS. TSEnvironment COM-objekt medan aktivitetssekvensen körs.

Följande Windows PowerShell exempel frågar variabeln _SMSTSLogPath för att hämta den aktuella loggplatsen. Skriptet anger också en anpassad variabel.

# Create an object to access the task sequence environment
$tsenv = New-Object -ComObject Microsoft.SMS.TSEnvironment

# Query the environment to get an existing variable
# Set a variable for the task sequence log path
$LogPath = $tsenv.Value("_SMSTSLogPath")

# Or, convert all of the variables currently in the environment to PowerShell variables
$tsenv.GetVariables() | % { Set-Variable -Name "$_" -Value "$($tsenv.Value($_))" }

# Write a message to a log file
Write-Output "Hello world!" | Out-File -FilePath "$LogPath\mylog.log" -Encoding "Default" -Append

# Set a custom variable "startTime" to the current time
$tsenv.Value("startTime") = (Get-Date -Format HH:mm:ss) + ".000+000"

Svarsfil för Windows-installation

Svarsfilen för Windows-installationen som du anger kan ha inbäddade aktivitetssekvensvariabler. Använd formuläret %varname%, där varname är namnet på variabeln. Steget Konfigurera Windows och ConfigMgr ersätter variabelnamnsträngen för det faktiska variabelvärdet. Dessa inbäddade aktivitetssekvensvariabler kan inte användas i numeriska fält i en unattend.xml svarsfil.

Mer information finns i Konfigurera Windows och ConfigMgr.

Se även