Taakreeksvariabelen gebruiken in Configuration Manager

Van toepassing op: Configuration Manager (current branch)

De takenreeks-engine in de besturingssysteemimplementatiefunctie van Configuration Manager gebruikt veel variabelen om het gedrag te regelen. U kunt deze variabelen gebruiken voor het volgende:

  • Voorwaarden instellen voor stappen
  • Gedrag wijzigen voor specifieke stappen
  • Gebruiken in scripts voor complexere acties

Zie Takenreeksvariabelen voor een overzicht van alle beschikbare takenreeksvariabelen.

Typen variabelen

Er zijn verschillende soorten variabelen:

Ingebouwde variabelen

Ingebouwde variabelen geven informatie over de omgeving waarin de takenreeks wordt uitgevoerd. De waarden zijn beschikbaar in de hele taakreeks. Gewoonlijk initialiseert de takenreeks-engine ingebouwde variabelen voordat er stappen worden uitgevoerd.

Een _SMSTSLogPath omgevingsvariabele is bijvoorbeeld een omgevingsvariabele die het pad aangeeft waarnaar onderdelen van Configuration Manager logboekbestanden schrijven. Elke stap van de taakreeks heeft toegang tot deze omgevingsvariabele.

De taakreeks evalueert vóór elke stap enkele variabelen. Toont _SMSTSCurrentActionName bijvoorbeeld de naam van de huidige stap.

Actievariabelen

Met actievariabelen voor taakreeksen worden configuratie-instellingen opgegeven die door één stap van de taakreeks worden gebruikt. Standaard initialiseren de instellingen van de stap voordat deze wordt uitgevoerd. Deze instellingen zijn alleen beschikbaar terwijl de bijbehorende stap van de takenreeks wordt uitgevoerd. De taakreeks voegt de waarde van de actievariabele toe aan de omgeving voordat de stap wordt uitgevoerd. Vervolgens wordt de waarde uit de omgeving verwijderd nadat de stap is uitgevoerd.

U voegt bijvoorbeeld de stap Opdrachtregel uitvoeren toe aan een takenreeks. Deze stap bevat de eigenschap Beginnen in . De taakreeks slaat een standaardwaarde voor deze eigenschap op als de WorkingDirectory variabele. Deze waarde wordt initialiseerd voordat de stap Opdrachtregel uitvoeren wordt uitgevoerd. Terwijl deze stap wordt uitgevoerd, opent u de eigenschapswaarde Beginnen in uit de WorkingDirectory waarde. Nadat de stap is voltooid, wordt de waarde van de WorkingDirectory variabele uit de omgeving verwijderd door de takenreeks. Als de taakreeks nog een stap Opdrachtregel uitvoeren bevat, initialiseert deze een nieuwe WorkingDirectory variabele. Op dat moment wordt de variabele door de taakreeks ingesteld op de beginwaarde voor de huidige stap. Zie Werkmap voor meer informatie.

De standaardwaarde voor een actievariabele is aanwezig wanneer de stap wordt uitgevoerd. Als u een nieuwe waarde instelt, is deze beschikbaar voor meerdere stappen in de takenreeks. Als u een standaardwaarde overschrijft, blijft de nieuwe waarde in de omgeving. Deze nieuwe waarde vervangt de standaardwaarde voor andere stappen in de takenreeks. U voegt bijvoorbeeld een stap Variabele instellen toevoegen als de eerste stap van de takenreeks. Met deze stap stelt u de WorkingDirectory variabele in op C:\. Elke stap Opdrachtregel uitvoeren in de takenreeks gebruikt de waarde van de nieuwe beginmap.

Bij sommige taken in de taken worden bepaalde actievariabelen als uitvoer gemarkeerd. Stappen verderop in de taakreeks leest u deze uitvoervariabelen.

Opmerking

Niet alle stappen in de takenreeks hebben actievariabelen. Hoewel er bijvoorbeeld variabelen zijn gekoppeld aan de actie BitLocker inschakelen , zijn er geen variabelen gekoppeld aan de actie BitLocker uitschakelen .

Aangepaste variabelen

Deze variabelen worden niet door Configuration Manager gemaakt. Initialiseer uw eigen variabelen om ze te gebruiken als voorwaarden, opdrachtregels of scripts.

Volg deze richtlijnen wanneer u een naam opgeeft voor een nieuwe taakreeksvariabele:

  • De naam van de taakreeksvariabele kan bestaan uit letters, cijfers, het onderstrepingsteken (_) en een afbreekstreepje (-).

  • De namen van taakreeksvariabelen hebben een minimale lengte van één teken en een maximale lengte van 256 tekens.

  • Door de gebruiker gedefinieerde variabelen moeten beginnen met een letter (A-Z of a-z).

  • Door de gebruiker gedefinieerde variabelenamen mogen niet beginnen met het onderstrepingsteken. Alleen variabelen van de takenreeks alleen-lezen worden voorafgegaan door het onderstrepingsteken.

  • Namen van taakreeksvariabelen zijn niet hoofdlettergevoelig. en OSDVARosdvar zijn bijvoorbeeld dezelfde taakreeksvariabele.

  • De namen van taakreeksvariabelen kunnen niet beginnen of eindigen met een spatie. Ze mogen ook geen ingesloten ruimten hebben. Spaties aan het begin of einde van de naam van een variabele worden genegeerd.

Er is geen vaste limiet voor het aantal taakreeksvariabelen dat u kunt maken. Het aantal variabelen wordt echter beperkt door de grootte van de takenreeksomgeving. De totale grootte van de takenreeksomgeving is 8 kB. Zie Het takenreeksbeleid verkleinen voor meer informatie.

Alleen-lezen variabelen

U kunt de waarde van bepaalde variabelen, die alleen-lezen zijn, niet wijzigen. Meestal begint de naam met een onderstrepingsteken (_). De taakreeks gebruikt ze voor de bewerkingen. Alleen-lezen variabelen zijn zichtbaar in de takenreeksomgeving.

Deze variabelen zijn handig in scripts of opdrachtregels. Bijvoorbeeld het uitvoeren van een opdrachtregel en het doorsturen van de uitvoer naar een logbestand bij _SMSTSLogPath de andere logbestanden.

Opmerking

Alleen-lezen taakreeksvariabelen kunnen worden gelezen in stappen in een taakreeks, maar ze kunnen niet worden ingesteld. Gebruik bijvoorbeeld een alleen-lezen variabele als onderdeel van de opdrachtregel voor een opdrachtregelstap . U kunt geen alleen-lezen variabele instellen met de stap Taakreeksvariabele instellen .

Matrixvariabelen

Tijdens de taakreeks worden bepaalde variabelen als een matrix opgeslagen. Elk element in de matrix vertegenwoordigt de instellingen voor een afzonderlijk object. Gebruik deze variabelen wanneer een apparaat meer dan één object moet configureren. In de volgende stappen van de taakreeks worden matrixvariabelen gebruikt:

Variabelen instellen

Voor aangepaste variabelen of variabelen die niet alleen-lezen zijn, zijn er verschillende methoden om de waarde van de variabele te initialiseren en in te stellen:

Verwijder een variabele uit de omgeving op dezelfde manier als bij het maken van een variabele. Als u een variabele wilt verwijderen, stelt u de variabele in op een lege tekenreeks.

U kunt methoden combineren om een taakreeksvariabele in te stellen op verschillende waarden voor dezelfde reeks. Stel bijvoorbeeld de standaardwaarden in met de takenreekseditor en stel vervolgens aangepaste waarden in met behulp van een script.

Als u dezelfde variabele op verschillende manieren instelt, moet de takenreeksengine de volgende volgorde aanhouden:

  1. Eerst worden verzamelingsvariabelen geëvalueerd.

  2. Apparaatspecifieke variabelen overschrijven dezelfde variabelenset in een verzameling.

  3. Variabelen die door een methode tijdens de taakreeks worden ingesteld, hebben voorrang op verzamelings- of apparaatvariabelen.

Algemene beperkingen voor variabele taakreekswaarden

  • De variabele waarden van de taakreeks mogen niet meer dan 4000 tekens bevatten.

  • U kunt een alleen-lezen taakreeksvariabele niet wijzigen. Alleen-lezen variabelen hebben namen die beginnen met een onderstrepingsteken (_).

  • Variabele waarden van taakreeksen kunnen hoofdlettergevoelig zijn, afhankelijk van het gebruik van de waarde. In de meeste gevallen zijn taakreeksvariabele waarden niet hoofdlettergevoelig. Een variabele die een wachtwoord bevat, is hoofdlettergevoelig.

Taakreeksvariabele instellen

Gebruik deze stap in de takenreeks om één variabele in te stellen op één waarde.

Zie Taakvolgvariabele instellen voor meer informatie.

Dynamische variabelen instellen

Gebruik deze stap in de takenreeks om een of meer takenreeksvariabelen in te stellen. In deze stap definieert u regels om te bepalen welke variabelen en waarden moeten worden gebruikt.

Zie Dynamische variabelen instellen voor meer informatie.

PowerShell-script uitvoeren

Gebruik deze stap in de takenreeks als u een PowerShell-script wilt gebruiken om een taakreeksvariabele in te stellen.

U kunt een scriptnaam opgeven op basis van een pakket of rechtstreeks een PowerShell-script invoeren in de stap. Gebruik vervolgens de stapeigenschap Uitvoer naar taakreeksvariabele om de scriptuitvoer op te slaan in een aangepaste taakreeksvariabele.

Zie PowerShell-script uitvoeren voor meer informatie over deze stap.

Opmerking

U kunt ook een PowerShell-script gebruiken om een of meer variabelen in te stellen met het TSEnvironment-object . Zie How to use variables in a running task sequence in the Configuration Manager SDK (Variabelen gebruiken in een actieve takenreeks) voor meer informatie.

Voorbeeldscenario met stap PowerShell-script uitvoeren

Uw omgeving heeft gebruikers in meerdere landen/regio's. U wilt daarom de taal van het besturingssysteem opvragen die als voorwaarde moet worden ingesteld voor meerdere taalspecifieke stappen voor het besturingssysteem toepassen .

  1. Voeg een exemplaar van het PowerShell-script uitvoeren toe aan de taakreeks voordat u de stappen Besturingssysteem toepassen uitvoert .

  2. Gebruik de optie om een PowerShell-script in te voeren om de volgende opdracht op te geven:

    (Get-Culture).TwoLetterISOLanguageName
    

    Zie Get-Culture voor meer informatie over de cmdlet. Zie Lijst met ISO 639-1-codes voor meer informatie over de tweeletterige ISO-taalnamen.

  3. Geef voor de optie Uitvoer naar taakreeksvariabele het volgende op CurrentOSLanguage.

    Schermafbeelding van voorbeeldstap PowerShell-script uitvoeren

  4. Maak in de stap Besturingssysteem toepassen voor de Engelstalige afbeelding de volgende voorwaarde: Task Sequence Variable CurrentOSLanguage equals "en"

    Schermopname van de voorbeeldvoorwaarde in de stap Besturingssysteem toepassen

    Tip

    Zie Toegang krijgen tot variabelen - Stap voorwaarde voor meer informatie over het maken van een voorwaarde op een stap.

  5. Sla de takenreeks op en implementeer deze.

Wanneer de stap PowerShell-script uitvoeren wordt uitgevoerd op een apparaat met de Engelse versie van Windows, geeft de opdracht de waarde enals resultaat. Deze waarde wordt vervolgens opgeslagen in de aangepaste variabele. Als de stap Besturingssysteem toepassen voor de Engelstalige image wordt uitgevoerd op hetzelfde apparaat, is de voorwaarde waar. Als u meerdere exemplaren van de stap Besturingssysteem toepassen voor verschillende talen hebt, wordt met de taakvolgorde dynamisch de stap uitgevoerd die overeenkomt met de taal van het besturingssysteem.

Verzamelings- en apparaatvariabelen

U kunt aangepaste taakreeksvariabelen definiëren voor apparaten en verzamelingen. Variabelen die u voor een apparaat definieert, worden taakreeksvariabelen per apparaat genoemd. Variabelen die voor een verzameling zijn gedefinieerd, worden taakreeksvariabelen per verzameling genoemd. Als er een conflict is, hebben variabelen per apparaat voorrang op variabelen per verzameling. Dit gedrag betekent dat taakreeksvariabelen die zijn toegewezen aan een specifiek apparaat automatisch een hogere prioriteit hebben dan variabelen die zijn toegewezen aan de verzameling die het apparaat bevat.

Apparaat XYZ is bijvoorbeeld lid van verzameling ABC. U wijst MyVariable toe aan de verzameling ABC met de waarde 1. U wijst MyVariable ook toe aan apparaat XYZ met de waarde 2. De variabele die is toegewezen aan XYZ heeft een hogere prioriteit dan de variabele die is toegewezen aan de verzameling ABC. Wanneer een taakreeks met deze variabele op XYZ wordt uitgevoerd, heeft MyVariable de waarde 2.

U kunt variabelen per apparaat en per verzameling verbergen, zodat ze niet zichtbaar zijn in de Configuration Manager-console. Wanneer u de optie Deze waarde niet weergeven in de Configuration Manager-console gebruikt, wordt de waarde van de variabele niet weergegeven in de console. In het logboekbestand van de taakreeks (smsts.log) of de foutopsporing van de taakreeks wordt de variabele waarde ook niet weergegeven. De variabele kan nog steeds worden gebruikt door de taakreeks wanneer deze wordt uitgevoerd. Als u deze variabelen niet langer verborgen wilt houden, verwijdert u ze eerst. Definieer vervolgens de variabelen opnieuw zonder de optie te selecteren om ze te verbergen.

Waarschuwing

Als u variabelen opneemt in de opdrachtregel van de stap Opdrachtregel uitvoeren , wordt in het logboekbestand van de takenreeks de volledige opdrachtregel weergegeven, inclusief de variabele waarden. Als u wilt voorkomen dat er mogelijk gevoelige gegevens in het logboekbestand worden weergegeven, stelt u de takenreeksvariabele OSDDoNotLogCommand in op TRUE.

U kunt variabelen per apparaat beheren op een primaire site of op een centrale beheersite. Configuration Manager ondersteunt niet meer dan 1000 toegewezen variabelen voor een apparaat.

Belangrijk

Wanneer u variabelen per verzameling gebruikt voor takenreeksen, moet u rekening houden met het volgende gedrag:

  • Wijzigingen in verzamelingen worden altijd doorgevoerd in de gehele hiërarchie. Wijzigingen die u aanbrengt in verzamelingsvariabelen, gelden niet alleen voor leden van de huidige site, maar voor alle leden van de verzameling in de hiërarchie.

  • Wanneer u een verzameling verwijdert, worden met deze actie ook de taakreeksvariabelen verwijderd die u voor de verzameling hebt geconfigureerd.

Takenreeksvariabelen maken voor een apparaat

  1. Ga in de Configuration Manager-console naar de werkruimte Activa en compliance en selecteer het knooppunt Apparaten.

  2. Selecteer het doelapparaat en selecteer Eigenschappen.

  3. Ga in het dialoogvenster Eigenschappen naar het tabblad Variabelen .

  4. Selecteer het pictogram Nieuw voor elke variabele die u wilt maken. Geef de naam en de waarde van de taakreeksvariabele op. Als u de variabele wilt verbergen zodat deze niet zichtbaar is in de Configuration Manager-console, selecteert u de optie Deze waarde niet weergeven in de Configuration Manager-console.

  5. Nadat u alle variabelen aan de apparaateigenschappen hebt toegevoegd, selecteert u OK.

Takenreeksvariabelen maken voor een verzameling

  1. Ga in de Configuration Manager-console naar de werkruimte Activa en compliance en selecteer het knooppunt Apparaatverzamelingen. Selecteer de doelverzameling en kies Eigenschappen.

  2. Ga in het dialoogvenster Eigenschappen naar het tabblad Verzamelingsvariabelen .

  3. Selecteer het pictogram Nieuw voor elke variabele die u wilt maken. Geef de naam en de waarde van de taakreeksvariabele op. Als u de variabele wilt verbergen zodat deze niet zichtbaar is in de Configuration Manager-console, selecteert u de optie Deze waarde niet weergeven in de Configuration Manager-console.

  4. Geef desgewenst de prioriteit op die in Configuration Manager moet worden gebruikt bij de evaluatie van de taakreeksvariabelen.

  5. Nadat u alle variabelen aan de eigenschappen van de verzameling hebt toegevoegd, selecteert u OK.

TSEnvironment COM-object

Gebruik het object TSEnvironment als u wilt werken met variabelen uit een script.

Zie How to use variables in a running task sequence in the Configuration Manager SDK (Variabelen gebruiken in een actieve takenreeks) voor meer informatie.

De opdracht Vooraf starten

De prestart-opdracht is een script of uitvoerbaar bestand dat wordt uitgevoerd in Windows PE voordat de gebruiker de taakreeks selecteert. Met de opdracht Vooraf starten kunt u een query uitvoeren op een variabele of de gebruiker om informatie vragen, om deze vervolgens in de omgeving op te slaan. Gebruik het TSEnvironment COM-object om variabelen uit de prestart-opdracht te lezen en schrijven.

Zie Opdrachten voor vooraf starten voor media voor takenreeksen voor meer informatie.

Wizard Takenreeks

Nadat u een taakreeks hebt geselecteerd in het venster van de wizard Takenreeks, bevat de pagina voor het bewerken van taakreeksvariabelen een knop Bewerken . U kunt de variabelen bewerken met toegankelijke sneltoetsen. Deze wijziging helpt in gevallen waarin geen muis beschikbaar is.

Wizard Media Taakreeks

Geef variabelen op voor takenreeksen die vanaf media worden uitgevoerd. Wanneer u media gebruikt om het besturingssysteem te implementeren, voegt u de taakreeksvariabelen toe en geeft u de waarden ervan op wanneer u de media maakt. De variabelen en hun waarden worden opgeslagen op de media.

Opmerking

Taakreeksen worden opgeslagen op zelfstandige media. Alle andere soorten media, zoals voorbereide media, halen de takenreeks echter op van een beheerpunt.

Wanneer u een takenreeks uitvoert vanaf media, kunt u een variabele toevoegen op de pagina Aanpassing van de wizard.

Gebruik de mediavariabelen in plaats van variabelen per verzameling of per computer. Als de taakreeks wordt uitgevoerd vanaf media, zijn variabelen per computer en per verzameling niet van toepassing en worden deze niet gebruikt.

Tip

De taakvolgorde schrijft de pakket-id en de prestart-opdrachtregel naar het CreateTSMedia.log-bestand op de computer waarop de Configuration Manager console wordt uitgevoerd. Dit logboekbestand bevat de waarde van eventuele variabelen in de takenreeks. Bekijk dit logboekbestand om de waarde voor de taakreeksvariabelen te controleren.

Zie Media voor takenreeksen maken voor meer informatie.

Toegang krijgen tot variabelen

Nadat u de variabele en de bijbehorende waarde hebt opgegeven met een van de methoden uit de vorige sectie, gebruikt u deze in uw takenreeksen. U kunt bijvoorbeeld standaardwaarden invoeren voor ingebouwde takenreeksvariabelen of een stap afhankelijk maken van de waarde van een variabele.

Gebruik de volgende methoden om toegang te krijgen tot variabele waarden in de takenreeksomgeving:

Gebruiken in een stap

Een variabele waarde opgeven voor een instelling in een takenreeksstap. Bewerk in de takenreekseditor de stap en geef de naam van de variabele op als de veldwaarde. Plaats de naam van de variabele tussen procenttekens (%).

Gebruik bijvoorbeeld de naam van de variabele als onderdeel van het opdrachtregelveld van de stap Opdrachtregel uitvoeren . Met de volgende opdrachtregel wordt de computernaam naar een tekstbestand geschreven.

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

Stap voorwaarde

Ingebouwde of aangepaste taakreeksvariabelen gebruiken als onderdeel van een voorwaarde voor een stap of groep. De variabele waarde wordt geëvalueerd voordat de stap of groep wordt uitgevoerd.

Als u een voorwaarde wilt toevoegen waarmee een variabele waarde wordt geëvalueerd, voert u de volgende stappen uit:

  1. Selecteer in de takenreekseditor de stap of groep waaraan u de voorwaarde wilt toevoegen.

  2. Naar het tabblad Opties voor de stap of groep gaan. Klik op Voorwaarde toevoegen en selecteer Taakreeksvariabele.

  3. Geef in het dialoogvenster Taakreeksvariabele de volgende instellingen op:

    • Variabele: de naam van de variabele. Bijvoorbeeld _SMSTSInWinPE.

    • Voorwaarde: de voorwaarde voor het evalueren van de variabele waarde. De volgende voorwaarden zijn beschikbaar:

      • Bestaat
      • Niet bestaat
      • Is gelijk aan
      • Is niet gelijk aan
      • Groter dan
      • Groter dan of gelijk aan
      • Kleiner dan
      • Kleiner dan of gelijk aan
      • Like (ondersteunt jokertekens van * en ?)
      • Not like (versie 2103 of hoger)
    • Waarde: de waarde van de variabele die moet worden gecontroleerd. Bijvoorbeeld false.

De drie bovenstaande voorbeelden vormen een algemene voorwaarde om te testen of de taakreeks wordt uitgevoerd vanuit een opstartinstallatiekopie in Windows PE:

Taakreeksvariabele_SMSTSInWinPE equals "false"

Zie deze voorwaarde in de groep Noteren Files en instellingen van de standaardtakenreekssjabloon om een bestaande installatiekopie van het besturingssysteem te installeren.

Zie Taakreekseditor - Voorwaarden voor meer informatie over voorwaarden.

Aangepast script

Variabelen lezen en schrijven met behulp van het object Microsoft.SMS.TSEnvironment COM terwijl de taakreeks wordt uitgevoerd.

In het volgende Windows PowerShell voorbeeld wordt een query uitgevoerd op de variabele _SMSTSLogPath om de huidige locatie van het logboek op te halen. Het script stelt ook een aangepaste variabele in.

# 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"

Antwoordbestand voor Windows Setup

Het Windows Setup-antwoordbestand dat u opgeeft, kan ingesloten takenreeksvariabelen bevatten. Gebruik de vorm %varname%, waarbij varnaam de naam van de variabele is. De stap Installatievensters en ConfigMgr vervangt de variabele naamtekenreeks voor de werkelijke variabele waarde. Deze ingesloten taakreeksvariabelen kunnen niet worden gebruikt in numerieke velden in een unattend.xml antwoordbestand.

Zie Windows en ConfigMgr instellen voor meer informatie.

Zie ook