Hedef makinelerde PowerShell görevi

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018-TFS 2015

Uzak makineler üzerinde PowerShell betikleri yürütmek için bu görevi kullanın.

Bu görev hem PowerShell betikleri hem de PowerShell-DSC betikleri çalıştırabilir:

  • PowerShell betikleri için bilgisayarlarda PowerShell 2,0 veya üzeri yüklü olmalıdır.
  • PowerShell-DSC betikleri için bilgisayarlarda Windows Management Framework 'ün en son sürümünün yüklü olması gerekir. Bu, Windows 8.1, Windows Server 2012 R2 ve sonraki sürümlerinde varsayılan olarak yüklenir.

Not

Microsoft Team Foundation Server (TFS) 2018 ve önceki sürümlerde, derleme ve yayın işlem hatları tanımlar olarak adlandırılır, çalışmalara derlemeler denir, hizmet bağlantılarına hizmet uç noktaları denir, aşamalar ortamlar olarak adlandırılır ve işler aşamalar olarak adlandırılır.

Önkoşullar

Bu görev, şirket içi fiziksel bilgisayarlara veya etki alanına katılmış veya çalışma grubuna katılmış sanal bilgisayarlara erişmek için Windows Uzaktan Yönetimi (WinRM) kullanır.

Şirket içi fiziksel bilgisayarlar veya sanal makineler için WinRM 'yi ayarlamak için

Etki alanına katılmış olarak açıklanan adımları izleyin

Microsoft Azure Sanal Makineler için WinRM 'yi ayarlamak için

Azure sanal makineleri, HTTPS protokolünü kullanmak için WinRM 'yi gerektirir. Otomatik olarak imzalanan bir test sertifikası kullanabilirsiniz. Bu durumda, Otomasyon Aracısı sertifikanın güvenilirliğini güvenilir bir sertifika yetkilisi tarafından verildiği şekilde doğrulamaz.

  • Azure klasik sanal makineler. Azure portal Klasik bir sanal makine oluşturduğunuzda, sanal makine zaten güvenlik duvarında zaten açık olan 5986 varsayılan bağlantı noktası ve makinede yüklü otomatik olarak imzalanan bir SERTIFIKA olan https üzerinden WinRM için ayarlanmıştır. Bu sanal makinelere, daha fazla yapılandırma gerekmeden erişilebilir. Mevcut klasik sanal makineler, Azure Kaynak grubu dağıtım görevi kullanılarak da seçilebilir.

  • Azure Kaynak grubu. Bir Azure Kaynak grubunuz varsa

Zaten Azure portal tanımlanmış, WinRM HTTPS protokolünü kullanacak şekilde yapılandırmanız gerekir. Güvenlik duvarında 5986 numaralı bağlantı noktasını açmanız ve kendinden imzalı bir sertifika yüklemeniz gerekir.

Sanal makineler içeren Azure kaynak gruplarını dinamik olarak dağıtmak için, Azure Kaynak grubu dağıtım görevini kullanın. Bu görevde dağıtım önkoşullarını etkinleştir adlı bir onay kutusu bulunur. Sanal makinelerde WinRM HTTPS protokolünü otomatik olarak ayarlamak için bunu seçin, güvenlik duvarında 5986 numaralı bağlantı noktasını açın ve bir test sertifikası kurun. Sanal makineler daha sonra dağıtım görevinde kullanıma hazırlardır.

YAML kod parçacığı

# PowerShell on target machines
# Execute PowerShell scripts on remote machines using PSSession and Invoke-Command for remoting
- task: PowerShellOnTargetMachines@3
  inputs:
    machines: 
    #userName: # Optional
    #userPassword: # Optional
    #scriptType: 'Inline' # Optional. Options: filePath, inline
    #scriptPath: # Required when scriptType == FilePath
    #inlineScript: '# Write your powershell commands here.Write-Output Hello World' # Required when scriptType == Inline
    #scriptArguments: # Optional
    #initializationScript: # Optional
    #sessionVariables: # Optional
    #communicationProtocol: 'Https' # Optional. Options: http, https
    #authenticationMechanism: 'Default' # Optional. Options: default, credssp
    #newPsSessionOptionArguments: '-SkipCACheck -IdleTimeout 7200000 -OperationTimeout 0 -OutputBufferingMode Block' # Optional
    #errorActionPreference: 'stop' # Optional. Options: stop, continue, silentlyContinue
    #failOnStderr: false # Optional
    #ignoreLASTEXITCODE: false # Optional
    #workingDirectory: # Optional
    #runPowershellInParallel: true # Optional

Bağımsız değişkenler

Bağımsız Değişken Description
Larla İsteğe bağlı olarak bağlantı noktası numarası dahil olmak üzere, makine FQDN 'leri veya IP adreslerinin virgülle ayrılmış listesi. Şunları yapabilirsiniz:
-Bir Azure Kaynak grubununadı.
-Makine adlarının virgülle ayrılmış listesi. Örnek: dbserver.fabrikam.com,dbserver_int.fabrikam.com:5986,192.168.34:5986
-Önceki bir görevden çıkış değişkeni.
Bir bağlantı noktası belirtmezseniz, varsayılan WinRM bağlantı noktası kullanılır. Bu, yapılandırdığınız protokole bağlıdır: WinRM 2,0 için varsayılan HTTP bağlantı noktası 5985 ve varsayılan HTTPS bağlantı noktası 5986.
Yönetici oturumu açma Hedef konaktaki bir etki alanının veya yerel yönetim hesabının Kullanıcı adı.
- UserName, *etkialanı * kullanıcıadı, Machine-Name\Username ve .\username gibi biçimler desteklenir.
-Gibi UPN biçimleri username@domain.com ve NT AUTHORITY\SYSTEM gibi yerleşik sistem hesapları desteklenmez.
Parola Yukarıda belirtilen yönetim hesabının parolası. Parolayı gizlemek için derleme veya sürüm ardışık düzeninde küresel bir gizli dizi değişkeni kullanmayı düşünün. Örnek: $(passwordVariable)
Protokol Http veya https olmak üzere hedef konağa bağlanmak için kullanılacak protokol.
Sınama sertifikası Https seçeneğini belirlerseniz, güvenilen bir sertifika yetkilisi tarafından makinenin sertifikasının orijinalliğini doğrulamayı atlamak için bu onay kutusunu işaretleyin.
Dağıtım-PowerShell betiği Hedef makinedeki PowerShell betiğinin konumu. , Gibi ortam değişkenlerini içerebilir $env:windir ve $env:systemroot örnek: C:\FabrikamFibre\Web\deploy.ps1
Dağıtım-betik bağımsız değişkenleri Varsa, komut dosyası için gereken bağımsız değişkenler. Örnek: -applicationPath $(applicationPath) -username $(vmusername) -password $(vmpassword)
Dağıtım-başlatma betiği PowerShell-DSC tarafından kullanılan veri betiğinin hedef makinesindeki konum. Bir başlatma betiği yerine bağımsız değişkenlerin kullanılması önerilir.
Dağıtım-oturum değişkenleri PowerShell betikleri için oturum değişkenlerini ayarlamak için kullanılır. $varx=valuex, $vary=valueySürüm hizmeti 'nin önceki sürümleriyle geriye dönük uyumluluk için en yaygın olarak kullanılan, virgülle ayrılmış bir liste. Oturum değişkenleri yerine bağımsız değişkenlerin kullanılması önerilir.
Gelişmiş-PowerShell 'i paralel olarak çalıştırma Tüm hedef makinelerde PowerShell betiklerini paralel olarak yürütmek için bu seçeneği ayarlayın
Gelişmiş-makineleri seçin Filtre ölçütü parametresini kullanırken gruptaki makineleri nasıl belirtmek istediğinize bağlı olarak, makine adları veya Etiketler' i seçin.
Gelişmiş filtre ölçütü İsteğe bağlı. Görevin hedeflenecek makineleri tanımlayan makine adları veya etiket adları listesi. Filtre ölçütü şu olabilir:
-Bir Azure Kaynak grubununadı.
-Önceki bir görevden çıkış değişkeni.
-Etiket adlarının veya makine adlarının virgülle ayrılmış listesi.
Makine adlarının kullanıldığı zaman biçimi, makine FQDN 'lerinin veya IP adreslerinin virgülle ayrılmış listesidir.
{TagName}:{Value} örneği olarak bir filtrenin etiket adlarını belirtin: Role:DB;OS:Win8.1
Denetim seçenekleri Bkz. Denetim seçenekleri

Görevin sürüm 3. x 'i, PowerShell betik kodunuzu girebileceğiniz satır içi betik ayarını içerir.

Açık kaynak

Bu görev GitHub 'daaçık kaynaktır. Geribildirim ve katılımlar hoş geldiniz.

SSS

Bir aracıya ihtiyacım var mı?

Yapınızı veya sürümünüzü çalıştırmak için en az bir aracınız olması gerekir.

Sorun yaşıyorum. Sorunları nasıl giderebilirim?

Bkz. derleme ve yayın sorunlarını giderme.

Varsayılan bir aracı havuzu seçemiyorum ve derleme veya yayınımı sıraya alamıyorum. Bu Nasıl yaparım? düzeltilsin mi?

Bkz. Aracı havuzları.

NuGet Push görevlerim şu hata ile başarısız oluyor: "hata: yerel veren sertifikası alınamıyor". Bunu nasıl giderebilirim?

Bu, güvenilen kök sertifika eklenerek düzeltilebilir. NODE_EXTRA_CA_CERTS=fileOrtam değişkenini yapı aracıya ekleyebilir veya NODE.EXTRA.CA.CERTS=file görev değişkenini işlem hattınızda ekleyebilirsiniz. Daha fazla ayrıntı için bkz. ortam değişkenleri .

TFS 'yi şirket içinde kullanıyorum ve bu özelliklerden bazılarını görmüyorum. Neden olmasın?

Bu özelliklerden bazıları yalnızca Azure Pipelines kullanılabilir ve şirket içinde henüz kullanılabilir değil. TFS 'nin en son sürümüne yükselttiysenizbazı özellikler şirket içinde kullanılabilir.