Configuration Manager'de görev dizisi değişkenleri nasıl kullanılır

Uygulama hedefi: Configuration Manager (güncel dalı)

Configuration Manager'in işletim sistemi dağıtım özelliğindeki görev dizisi altyapısı, davranışlarını denetlemek için birçok değişken kullanır. Bu değişkenleri kullanarak:

  • Adımlarla ilgili koşulları ayarlama
  • Belirli adımlar için davranışları değiştirme
  • Daha karmaşık eylemler için komut dosyalarında kullanın

Kullanılabilir tüm görev dizisi değişkenlerinin başvurusu için bkz: Görev dizisi değişkenleri.

Değişken türleri

Çeşitli değişken türleri vardır:

Yerleşik değişkenler

Yerleşik değişkenler, görev dizisinin çalıştığı ortam hakkında bilgi sağlar. Değerleri tüm görev dizisi boyunca kullanılabilir. Genellikle, görev dizisi altyapısı herhangi bir adımı çalıştırmadan önce yerleşik değişkenleri başlatır.

Örneğin, _SMSTSLogPath Configuration ManagerConfiguration Manager bileşenlerinin günlük dosyalarını yazdığı yolu belirten bir ortam değişkenidir. Herhangi bir görev dizisi adımı bu ortam değişkenine erişebilir.

Görev dizisi her adımdan önce bazı değişkenleri değerlendirir. Örneğin, _SMSTSCurrentActionName geçerli adımın adı listelenir.

Eylem değişkenleri

Görev dizisi eylem değişkenleri, tek bir görev dizisi adımının kullanacağı yapılandırma ayarlarını belirtir. Varsayılan olarak, adım çalışmadan önce ayarlarını başlatır. Bu ayarlar yalnızca ilişkili görev dizisi adımı çalışırken kullanılabilir. Görev dizisi, adımı çalıştırmadan önce ortama eylem değişkeni değerini ekler. Ardından, adım çalıştırıldıktan sonra değeri ortamdan kaldırır.

Örneğin, Komut Satırını Çalıştır adımını bir görev dizisine eklersiniz. Bu adım bir Başlatma özelliği içerir. Görev dizisi bu özellik için varsayılan değeri değişken olarak WorkingDirectory depolar. Görev dizisi, Komut Satırını Çalıştır adımını çalıştırmadan önce bu değeri başlatır. Bu adım çalışırken, değerden WorkingDirectoryBaşlatma özelliği değerine erişin. Adım tamamlandıktan sonra, görev dizisi değişkenin WorkingDirectory değerini ortamdan kaldırır. Görev dizisi başka bir Komut Satırını Çalıştır adımı içeriyorsa, yeni WorkingDirectory bir değişken başlatır. Bu anda, görev dizisi değişkeni geçerli adımın başlangıç değerine ayarlar. Daha fazla bilgi için bkz: WorkingDirectory.

Eylem değişkeninin varsayılan değeri, adım çalıştırıldığında mevcuttur. Yeni bir değer ayarlarsanız, bu değer görev dizisindeki birden çok adımda kullanılabilir. Varsayılan değeri geçersiz kılarsanız, yeni değer ortamda kalır. Bu yeni değer, görev dizisindeki diğer adımlar için varsayılan değeri geçersiz kılar. Örneğin, görev dizisinin ilk adımı olarak bir Görev Dizisi Değişkenini Ayarla adımı eklersiniz. Bu adım, değişkeni WorkingDirectoryC:\olarak ayarlar. Görev dizisindeki herhangi bir Komut Satırını Çalıştır adımları, yeni başlangıç dizini değerini kullanır.

Bazı görev dizisi adımları, belirli eylem değişkenlerini çıktı olarak işaretler. Görev dizisinin sonraki adımlarında bu çıkış değişkenleri okunur.

Not

Tüm görev dizisi adımlarının eylem değişkenleri yoktur. Örneğin, BitLocker'ı Etkinleştir eylemiyle ilişkili değişkenler olduğu halde, BitLocker'ı Devre Dışı Bırak eylemiyle ilişkilendirilmiş hiçbir değişken yoktur.

Özelleştirilebilen değişkenler

Bu değişkenler, Configuration Manager oluşturmadığı değişkenlerdir. Koşul olarak, komut satırlarında veya komut dosyalarında kullanmak için kendi değişkenlerinizi başlatın.

Yeni bir görev dizisi değişkeni için bir ad belirttiğinizde, şu yönergeleri izleyin:

  • Görev dizisi değişkeninin adı harfler, sayılar, alt çizgi karakteri (_) ve kısa çizgi (-) içerebilir.

  • Görev dizisi değişken adlarının uzunluğu en az bir karakter, en çok uzunluğu ise 256 karakterdir.

  • Kullanıcı tanımlı değişkenler bir harfle ( veyaA-Za-z) başlamalıdır.

  • Kullanıcı tanımlı değişken adları alt çizgi karakteriyle başlayamaz. Yalnızca salt okunur görev dizisi değişkenlerinden önce alt çizgi karakteri gelir.

  • Görev dizisi değişken adları büyük/küçük harfe duyarlı değildir. Örneğin, OSDVAR ve osdvar aynı görev dizisi değişkenidir.

  • Görev dizisi değişken adları boşlukla başlayamaz veya bitemez. Ayrıca katıştırılmış boşluklar olamaz. Görev dizisi, bir değişken adının başındaki veya sonundaki boşlukları yoksayar.

Oluşturabileceğiniz görev dizisi değişkeni sayısı konusunda belirlenmiş bir sınır yoktur. Ancak, değişkenlerin sayısı görev dizisi ortamının boyutuyla sınırlıdır. Görev dizisi ortamı için toplam boyut sınırı 8 KB'tır. Daha fazla bilgi için bkz. Görev dizisi ilkesinin boyutunu küçültme.

Salt okunur değişkenler

Salt okunur olan bazı değişkenlerin değerini değiştiremezsiniz. Genellikle ad bir alt çizgi karakteriyle (_) başlar. Görev dizisi bunları işlemleri için kullanır. Salt okunur değişkenler görev dizisi ortamında görünür.

Bu değişkenler komut dosyalarında veya komut satırlarında kullanışlıdır. Örneğin, bir komut satırı çalıştırma ve çıkışı diğer günlük dosyalarıyla birlikte bir günlük dosyasına _SMSTSLogPath aktarma.

Not

Salt okunur görev dizisi değişkenleri, bir görev dizisindeki adımlar tarafından okunabilir, ancak ayarlanamaz. Örneğin, Komut Satırını Çalıştır adımı için komut satırının bir parçası olarak salt okunur bir değişken kullanın. Görev Dizisi Değişkenini Ayarla adımını kullanarak salt okunur bir değişken ayarlayamazsınız.

Dizi değişkenleri

Görev dizisi bazı değişkenleri bir dizi olarak depolar. Dizideki her öğe, tek bir nesnenin ayarlarını temsil eder. Bir cihazda yapılandırılacak birden fazla nesne olduğunda bu değişkenleri kullanın. Aşağıdaki görev dizisi adımlarında dizi değişkenleri kullanılır:

Değişkenleri ayarlama

Özel değişkenler veya salt okunur olmayan değişkenler için, değişkenin değerini başlatmanın ve ayarlamanın birkaç yöntemi vardır:

Değişken oluştururken kullanılan yöntemlerin aynısını kullanarak ortamdan bir değişken silin. Bir değişkeni silmek için, değişken değerini boş bir dizeye ayarlayın.

Bir görev dizisi değişkenini aynı dizi için farklı değerlere ayarlamak için yöntemleri birleştirebilirsiniz. Örneğin, görev dizisi düzenleyicisini kullanarak varsayılan değerleri ayarlayın ve ardından bir betik kullanarak özel değerleri ayarlayın.

Aynı değişkeni farklı yöntemlerle ayarlarsanız, görev dizisi altyapısı aşağıdaki sırayı kullanır:

  1. Önce koleksiyon değişkenlerini değerlendirir.

  2. Cihaza özgü değişkenler, bir koleksiyondaki aynı değişken kümesini geçersiz kılar.

  3. Görev dizisi sırasında herhangi bir yöntemle ayarlanan değişkenler, koleksiyon veya cihaz değişkenlerine göre önceliklidir.

Görev dizisi değişken değerleri için genel sınırlamalar

  • Görev dizisi değişkeni değerleri 4.000 karakterden uzun olamaz.

  • Salt okunur bir görev dizisi değişkenini değiştiremezsiniz. Salt okunur değişkenlerin alt çizgi karakteriyle (_) başlayan adları vardır.

  • Görev dizisi değişkeni değerleri, değerin kullanımına bağlı olarak büyük/küçük harf duyarlı olabilir. Çoğu durumda, görev dizisi değişkeni değerleri büyük/küçük harfe duyarlı değildir. Parola içeren bir değişken büyük/küçük harf duyarlıdır.

Görev dizisi değişkenini ayarla

Tek bir değişkeni tek bir değere ayarlamak için görev dizisindeki bu adımı kullanın.

Daha fazla bilgi için bkz: Görev Dizisi Değişkenini Ayarlama.

Dinamik değişkenleri ayarlama

Bir veya daha fazla görev dizisi değişkeni ayarlamak için görev dizisindeki bu adımı kullanın. Hangi değişkenlerin ve değerlerin kullanılacağını belirlemek için bu adımda kuralları tanımlarsınız.

Daha fazla bilgi için bkz: Dinamik Değişkenleri Ayarlama.

PowerShell Betiğini Çalıştır

Bir görev dizisi değişkeni ayarlamak için bir PowerShell betiği kullanmak için görev dizisindeki bu adımı kullanın.

Bir paketten betik adı belirtebilir veya adıma doğrudan bir PowerShell betiği girebilirsiniz. Ardından, betik çıktısını özel bir görev dizisi değişkenine kaydetmek için görev dizisi değişkenine çıktı vermek için step özelliğini kullanın.

Bu adım hakkında daha fazla bilgi için bkz: PowerShell Betiğini Çalıştırma.

Not

TSEnvironment nesnesiyle bir veya daha fazla değişken ayarlamak için bir PowerShell betiği de kullanabilirsiniz. Daha fazla bilgi için bkz. Çalışan bir görev dizisinde değişkenler nasıl kullanılır, Configuration ManagerConfiguration Manager SDK.

PowerShell Betiğini Çalıştırma adımıyla örnek senaryo

Ortamınızın birden çok ülkede/bölgede kullanıcıları olduğundan, birden çok dile özgü İşletim Sistemi Uygulama adımında koşul olarak ayarlamak için işletim sistemi dilini sorgulamak istiyorsunuz.

  1. İşletim Sistemi Uygula adımlarından önce görev dizisine PowerShell Betiğini Çalıştır örneğini ekleyin.

  2. Aşağıdaki komutu belirtmek için PowerShell betiği girme seçeneğini kullanın:

    (Get-Culture).TwoLetterISOLanguageName
    

    Cmdlet hakkında daha fazla bilgi için Get-Culture konusuna bakın. İki harfli ISO dil adları hakkında daha fazla bilgi için ISO 639-1 kodlarının listesine bakın.

  3. Görev dizisi değişkenine çıktı alma seçeneği için şunu belirtinCurrentOSLanguage: .

    Örnek PowerShell Betiğini Çalıştırma adımının ekran görüntüsü

  4. İngilizce dil görüntüsü için İşletim Sistemi uygula adımında aşağıdaki koşulu oluşturun: Task Sequence Variable CurrentOSLanguage equals "en"

    İşletim sistemini uygula adımındaki örnek koşulun ekran görüntüsü

    İpucu

    Bir adımda koşul oluşturma hakkında daha fazla bilgi için Değişkenlere erişme - Adım koşulu bölümüne bakın.

  5. Görev dizisini kaydedin ve dağıtın.

PowerShell Betiğini Çalıştır adımı, Windows'un İngilizce dil sürümüne sahip bir cihazda çalıştırıldığında, komut .en Daha sonra bu değeri özelleştirilebilen değişkene kaydeder. İngilizce dil görüntüsü için İşletim Sistemi uygula adımı aynı cihazda çalıştırıldığında, koşul true olarak değerlendirilir. Farklı diller için İşletim Sistemini uygula adımının birden çok örneğine sahipseniz, görev dizisi işletim sistemi diliyle eşleşen adımı dinamik olarak çalıştırır.

Koleksiyon ve cihaz değişkenleri

Cihazlar ve koleksiyonlar için özel görev dizisi değişkenleri tanımlayabilirsiniz. Bir cihaz için tanımladığınız değişkenler, cihaz başına görev dizisi değişkenleri olarak adlandırılır. Bir koleksiyon için tanımlanan değişkenler, koleksiyon başına görev dizisi değişkenleri olarak adlandırılır. Bir çakışma varsa, cihaz başına değişkenler, koleksiyon başına değişkenlere göre önceliklidir. Bu davranış, belirli bir cihaza atanan görev dizisi değişkenlerinin, cihazı içeren koleksiyona atanan değişkenlerden otomatik olarak daha yüksek önceliğe sahip olduğu anlamına gelir.

Örneğin, XYZ cihazı ABC koleksiyonunun bir üyesidir. MyVariable'ı ABC koleksiyonuna 1 değeriyle atarsınız. Ayrıca MyVariable'ı XYZ cihazına 2 değeriyle atarsınız. XYZ'ye atanan değişken, ABC koleksiyonuna atanan değişkenden daha yüksek önceliğe sahiptir. Bu değişkene sahip bir görev dizisi XYZ'de çalıştırıldığında, MyVariable 2 değerine sahip olur.

Cihaz başına ve koleksiyon başına değişkenleri gizleyebilirsiniz, böylece bunlar Configuration ManagerConfiguration Manager konsolunda görünmez. Bu değeri Configuration ManagerConfiguration Manager konsolunda gösterme seçeneğini kullandığınızda, değişkenin değeri konsolda görüntülenmez. Görev dizisi günlük dosyası (smsts.log) veya görev dizisi hata ayıklayıcısı da değişken değerini göstermez. Değişken, çalıştırıldığında görev dizisi tarafından kullanılmaya devam edebilir. Bu değişkenlerin artık gizlenmesini istemiyorsanız, önce bunları silin. Ardından değişkenleri gizleme seçeneğini seçmeden yeniden tanımlayın.

Uyarı

Komut Satırını Çalıştır adımının komut satırına değişkenler eklerseniz, görev dizisi günlük dosyası değişken değerleri de dahil olmak üzere tam komut satırını görüntüler. Önemli olabilecek verilerin günlük dosyasında görünmesini önlemek için, görev dizisi değişkeni OSDDoNotLogCommand değerini TRUEolarak ayarlayın.

Cihaz başına değişkenleri birincil sitede veya merkezi yönetim sitesinde yönetebilirsiniz. Configuration ManagerConfiguration Manager, bir cihaz için 1.000'den fazla atanmış değişkeni desteklemez.

Önemli

Görev dizileri için koleksiyon başına değişkenler kullandığınızda aşağıdaki davranışları göz önünde bulundurun:

  • Koleksiyonlarda yapılan değişiklikler her zaman hiyerarşi içinde çoğaltılır. Koleksiyon değişkenlerinde yaptığınız tüm değişiklikler yalnızca geçerli sitenin üyeleri için değil, hiyerarşi boyunca koleksiyonun tüm üyeleri için geçerli olur.

  • Bir koleksiyonu sildiğinizde, bu eylem koleksiyon için yapılandırdığınız görev dizisi değişkenlerini de siler.

Bir cihaz için görev dizisi değişkenleri oluşturma

  1. Configuration Manager konsolunda Varlıklar ve Uyumluluk çalışma alanına gidin ve Cihazlar düğümünü seçin.

  2. Hedef cihazı seçin ve Özellikler'i seçin.

  3. Özellikler iletişim kutusunda Değişkenler sekmesine geçin.

  4. Oluşturmak istediğiniz her değişken için Yeni simgesini seçin. Görev dizisi değişkeninin Adını ve Değerini belirtin. Değişkeni Configuration Manager konsolunda görünmeyecek şekilde gizlemek istiyorsanız, Bu değeri Configuration Manager konsolunda gösterme seçeneğini belirleyin.

  5. Cihaz özelliklerine tüm değişkenleri ekledikten sonra Tamam'ı seçin.

Koleksiyon için görev dizisi değişkenleri oluşturma

  1. Configuration Manager konsolunda Varlıklar ve Uyumluluk çalışma alanına gidin ve Cihaz Koleksiyonları düğümünü seçin. Hedef koleksiyonu seçin ve Özellikler'i seçin.

  2. Özellikler iletişim kutusunda, Koleksiyon Değişkenleri sekmesine geçin.

  3. Oluşturmak istediğiniz her değişken için Yeni simgesini seçin. Görev dizisi değişkeninin Adını ve Değerini belirtin. Değişkeni Configuration Manager konsolunda görünmeyecek şekilde gizlemek istiyorsanız, Bu değeri Configuration Manager konsolunda gösterme seçeneğini belirleyin.

  4. İsteğe bağlı olarak, görev dizisi değişkenleri değerlendirilirken Configuration Manager önceliği kullanacak şekilde belirtin.

  5. Koleksiyon özelliklerine tüm değişkenleri ekledikten sonra Tamam'ı seçin.

TSEnvironment COM nesnesi

Bir betikteki değişkenlerle çalışmak için TSEnvironment nesnesini kullanın.

Daha fazla bilgi için bkz. Çalışan bir görev dizisinde değişkenler nasıl kullanılır, Configuration ManagerConfiguration Manager SDK.

Başlatma Öncesi komutu

Prestart komutu, kullanıcı görev dizisini seçmeden önce Windows PE'de çalışan bir komut dosyası veya yürütülebilir dosyadır. Prestart komutu, bir değişkeni sorgulayabilir veya kullanıcıdan bilgi isteyebilir ve ardından bu değişkeni ortama kaydedebilir. Prestart komutundan değişkenleri okumak ve yazmak için TSEnvironment COM nesnesini kullanın.

Daha fazla bilgi için bkz. Görev dizisi medyası için başlatma öncesi komutları.

Görev Dizisi Sihirbazı

Görev Dizisi Sihirbazı penceresinde bir görev dizisi seçtikten sonra, görev dizisi değişkenlerini düzenleme sayfası bir Düzenle düğmesi içerir. Değişkenleri düzenlemek için erişilebilir klavye kısayollarını kullanabilirsiniz. Bu değişiklik, farenin kullanılamadığı durumlarda yardımcı olur.

Görev Dizisi Medya Sihirbazı

Medyadan çalışan görev dizileri için değişkenler belirtin. İşletim sistemini dağıtmak için medya kullanırken, görev dizisi değişkenlerini ekler ve medyayı oluştururken değerlerini belirtirsiniz. Değişkenler ve değerleri medyada saklanır.

Not

Görev dizileri tek başına medyada depolanır. Ancak, önceden hazırlanmış medya gibi diğer tüm medya türleri, görev dizisini bir yönetim noktasından alır.

Medyadan bir görev dizisi çalıştırdığınızda, sihirbazın Özelleştirme sayfasında bir değişken ekleyebilirsiniz.

Koleksiyon başına veya bilgisayar başına değişkenler yerine medya değişkenlerini kullanın. Görev dizisi medyadan çalıştırılıyorsa, bilgisayar başına ve koleksiyon başına değişkenler uygulanmaz ve kullanılmaz.

İpucu

Görev dizisi, paket kimliğini ve başlatma öncesi komut satırını Configuration Manager konsolunu çalıştıran bilgisayardaki CreateTSMedia.log dosyasına yazar. Bu günlük dosyası, tüm görev dizisi değişkenlerinin değerini içerir. Görev dizisi değişkenlerinin değerini doğrulamak için bu günlük dosyasını gözden geçirin.

Daha fazla bilgi için bkz. Görev dizisi medyası oluşturma.

Değişkenlere nasıl erişilir?

Önceki bölümdeki yöntemlerden birini kullanarak değişkeni ve değerini belirttikten sonra, bu değişkeni görev dizilerinizde kullanın. Örneğin, yerleşik görev dizisi değişkenlerinin varsayılan değerlerine erişin veya bir adımı bir değişkenin değerine bağlı hale getirin.

Görev dizisi ortamındaki değişken değerlerine erişmek için aşağıdaki yöntemleri kullanın:

Bir adımda kullan

Görev dizisi adımındaki bir ayar için bir değişken değeri belirtin. Görev dizisi düzenleyicisinde adımı düzenleyin ve değişken adını alan değeri olarak belirtin. Değişken adını yüzde işaretleri (%) içine alın.

Örneğin, Komut Satırını Çalıştır adımındaki Komut Satırı alanının bir parçası olarak değişken adını kullanın. Aşağıdaki komut satırı bilgisayar adını bir metin dosyasına yazar.

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

Adım koşulu

Bir adım veya gruptaki bir koşulun parçası olarak yerleşik veya özel görev dizisi değişkenlerini kullanın. Görev dizisi, adım veya grubu çalıştırmadan önce değişken değerini değerlendirir.

Değişken değerini hesaplayan bir koşul eklemek için aşağıdaki adımları uygulayın:

  1. Görev dizisi düzenleyicisinde, koşulu eklemek istediğiniz adımı veya grubu seçin.

  2. Adım veya grubun Seçenekler sekmesine geçme. Koşul Ekle'ye tıklayın ve Görev Dizisi Değişkeni'ni seçin.

  3. Görev Dizisi Değişkeni iletişim kutusunda, aşağıdaki ayarları belirtin:

    • Değişken: Değişkenin adı. Örneğin, _SMSTSInWinPE.

    • Koşul: Değişken değerini değerlendirme koşulu. Aşağıdaki koşullar geçerlidir:

      • Var
      • Yok
      • Eşittir
      • Eşit değildir
      • Büyüktür
      • Büyüktür veya eşittir
      • Küçüktür
      • Küçüktür veya eşittir
      • Like (ve ?joker karakterlerini * destekler)
      • Beğenme (sürüm 2103 veya üzeri)
    • Değer: Denetlenecek değişkenin değeri. Örneğin, false.

Yukarıdaki üç örnek, görev dizisinin Windows PE'de bir önyükleme görüntüsünden çalıştırılıp çalıştırılmadığını test etmek için ortak bir koşul oluşturur:

Görev Dizisi Değişkeni_SMSTSInWinPE equals "false"

Mevcut bir işletim sistemi görüntüsünü yüklemek için varsayılan görev dizisi şablonunun Capture Files ve Ayarlar grubunda bu koşula bakın.

Koşullar hakkında daha fazla bilgi için bkz. Görev dizisi düzenleyicisi - Koşullar.

Özel komut dosyası

Görev dizisi çalışırken Microsoft.SMS.TSEnvironment COM nesnesini kullanarak değişkenleri okuyun ve yazın.

Aşağıdaki Windows PowerShell örnekte, geçerli günlük konumunu almak için _SMSTSLogPath değişkeni sorgulanır. Komut dosyası ayrıca bir özel değişken ayarlar.

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

Windows kurulumu yanıt dosyası

Sağladığınız Windows kurulumu yanıt dosyası, eklenmiş görev dizisi değişkenlerine sahip olabilir. %varname%formu kullanın, burada varname değişkenin adıdır. Kurulum Pencereleri ve ConfigMgrConfigMgr adımı, gerçek değişken değeri için değişken adı dizesini değiştirir. Bu eklenmiş görev dizisi değişkenleri bir unattend.xml yanıt dosyasındaki yalnızca sayısal alanlarda kullanılamaz.

Daha fazla bilgi için bkz. Windows Kurulumu ve ConfigMgrConfigMgr.

Ayrıca bkz.