PowerShell görevi
Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018-TFS 2015
PowerShell betiğini çalıştırmak için bu görevi kullanın.
Not
Microsoft Team Foundation Server (TFS) 2018 ve önceki sürümlerde, derleme ve yayın işlem hatlarıtanımlarolarak adlandırılır, çalışmalaraderlemelerdenir, hizmet bağlantılarınahizmet uç noktalarıdenir, aşamalarortamlarolarak adlandırılır ve işleraşamalarolarak adlandırılır.
Erişim
- DotNetFramework
YAML kod parçacığı
# PowerShell
# Run a PowerShell script on Linux, macOS, or Windows
- task: PowerShell@2
inputs:
#targetType: 'filePath' # Optional. Options: filePath, inline
#filePath: # Required when targetType == FilePath
#arguments: # Optional
#script: '# Write your PowerShell commands here.Write-Host Hello World' # Required when targetType == Inline
#errorActionPreference: 'stop' # Optional. Options: default, stop, continue, silentlyContinue
#warningPreference: 'default' # Optional. Options: default, stop, continue, silentlyContinue
#informationPreference: 'default' # Optional. Options: default, stop, continue, silentlyContinue
#verbosePreference: 'default' # Optional. Options: default, stop, continue, silentlyContinue
#debugPreference: 'default' # Optional. Options: default, stop, continue, silentlyContinue
#failOnStderr: false # Optional
#ignoreLASTEXITCODE: false # Optional
#pwsh: false # Optional
#workingDirectory: # Optional
YAML 'de PowerShell görevinin iki kısayolu de vardır:
- powershell: # inline script
workingDirectory: #
displayName: #
failOnStderr: #
errorActionPreference: #
warningPreference: #
informationPreference: #
verbosePreference: #
debugPreference: #
ignoreLASTEXITCODE: #
env: # mapping of environment variables to add
- pwsh: # inline script
workingDirectory: #
displayName: #
failOnStderr: #
errorActionPreference: #
warningPreference: #
informationPreference: #
verbosePreference: #
debugPreference: #
ignoreLASTEXITCODE: #
env: # mapping of environment variables to add
Her ikisi de göreve çözümlenme PowerShell@2 .
powershellWindows PowerShell çalıştırır ve yalnızca bir Windows aracısında çalışır.
pwsh , aracıya veya kapsayıcıya yüklenmesi gereken PowerShell Core 'u çalıştırır.
Not
Her PowerShell oturumu yalnızca çalıştığı işin süresi boyunca sürer. Önyüklendi 'e bağlı olan görevler, önyükleme ile aynı işte olmalıdır.
Bağımsız değişkenler
| Bağımsız Değişken | Açıklama |
|---|---|
targetTypeTür | Seçim Bunun satır içi bir betik mi yoksa bir dosyanın yolu mı olduğunu ayarlar .ps1 . Varsayılan olarak filepathVarsayılan değer: filePath |
filePathBetik yolu | Istenir Yürütülecek betiğin yolu. Tam olarak nitelenmiş bir yol veya göreli olmalıdır $(System.DefaultWorkingDirectory) . Tür ise gereklidir filePath |
argumentsBağımsız değişkenler | Seçim PowerShell betiğine geçirilen bağımsız değişkenler. Örneğin, -Name someName -Path -Value "Some long string value"Note: tür olduğunda kullanılmıyor inline . |
scriptKomut Dosyası | Istenir Betiğin içeriği. TargetType ise gereklidir inline . Desteklenen en fazla satır içi betik uzunluğu 32766 karakterdir. Bundan daha fazlasına ihtiyacınız varsa, dosyasındaki betiği kullanın. Varsayılan değer: # PowerShell komutlarınızı buraya yazın. Write-Host "Merhaba Dünya" |
errorActionPreferenceErrorActionPreference | Seçim "Varsayılan" olmadığında, satır, $ErrorActionPreference = 'VALUE' betiğinizin en üstüne eklenirVarsayılan değer: durdur |
warningPreferenceWarningPreference | Seçim "Varsayılan" olmadığında, satır, $WarningPreference = 'VALUE' betiğinizin en üstüne eklenirVarsayılan değer: varsayılan |
informationPreferenceInformationpreference | Seçim "Varsayılan" olmadığında, satır, $InformationPreference = 'VALUE' betiğinizin en üstüne eklenirVarsayılan değer: varsayılan |
verbosePreferenceVerbosePreference | Seçim "Varsayılan" olmadığında, satır, $VerbosePreference = 'VALUE' betiğinizin en üstüne eklenirVarsayılan değer: varsayılan |
debugPreferenceDebugPreference | Seçim "Varsayılan" olmadığında, satır, $DebugPreference = 'VALUE' betiğinizin en üstüne eklenirVarsayılan değer: varsayılan |
failOnStderrStandart hatada başarısız oldu | Seçim Bu doğruysa, hata ardışık düzenine herhangi bir hata yazılmışsa veya standart hata akışına herhangi bir veri yazılmışsa, bu görev başarısız olur. Aksi takdirde görev, hatayı belirlemede çıkış koduna güvenir Varsayılan değer: false |
ignoreLASTEXITCODE$LASTEXITCODE yoksay | Seçim Bu yanlışsa, satır if ((Test-Path -LiteralPath variable:\\LASTEXITCODE)) { exit $LASTEXITCODE } betiğinizin sonuna eklenir. Bu, dış komuttan gelen son çıkış kodunun, PowerShell çıkış kodu olarak yayılmasına neden olur. Aksi takdirde satır, betiğinizin sonuna eklenmezVarsayılan değer: false |
pwshPowerShell Core kullanın | Seçim bu true ise Windows görev, powershell.exe yerine yolunuzda pwsh.exe kullanacaktır Varsayılan değer: false |
workingDirectoryÇalışma dizini | Seçim Komutunu çalıştırmak istediğiniz çalışma dizinini belirtin. Boş bırakırsanız, çalışma dizini $(Build.SourcesDirectory) |
| Ortam değişkenleri | İşlemin ortamıyla eşlenecek ek öğelerin listesi. Örneğin, gizli değişkenler otomatik olarak eşlenmedi. Adında bir gizli değişkeniniz varsa Foo , bunu şöyle eşleştirebilirsiniz:
|
Örnekler
Hello World
test.ps1Deponuzın kökünde oluşturun:
Write-Host "Hello World from $Env:AGENT_NAME."
Write-Host "My ID is $Env:AGENT_ID."
Write-Host "AGENT_WORKFOLDER contents:"
gci $Env:AGENT_WORKFOLDER
Write-Host "AGENT_BUILDDIRECTORY contents:"
gci $Env:AGENT_BUILDDIRECTORY
Write-Host "BUILD_SOURCESDIRECTORY contents:"
gci $Env:BUILD_SOURCESDIRECTORY
Write-Host "Over and out."
Derleme işlem hattının Build sekmesinde şu görevi ekleyin:
| Görev | Bağımsız değişkenler |
|---|---|
Yardımcı program: PowerShell |
test.ps1 çalıştırın. Betik dosya adı: |
Uyarı yazma
PowerShell görevini ekleyin, türü olarak ayarlayın ve bu komut dosyasına yapıştırın:
# Writes a warning to build summary and to log in yellow text
Write-Host "##vso[task.LogIssue type=warning;]This is the warning"
Bir hata yazın
PowerShell görevini ekleyin, türü olarak ayarlayın ve bu komut dosyasına yapıştırın:
# Writes an error to build summary and to log in red text
Write-Host "##vso[task.LogIssue type=error;]This is the error"
İpucu
Bu hatanın derlemeyi başarısız olmasını istiyorsanız şu satırı ekleyin:
exit 1
ApplyVersionToAssemblies.ps1
Derleme işlem hattınızı özelleştirmek için bir komut dosyası kullanın
Birden çok bağımsız değişkenle PowerShell betiğini çağırma
PowerShell betiği oluştur test2.ps1 :
param ($input1, $input2)
Write-Host "$input1 $input2"
YAML ardışık düzeninde şunu arayın:
- task: PowerShell@2
inputs:
targetType: 'filePath'
filePath: $(System.DefaultWorkingDirectory)\test2.ps1
arguments: > # Use this to avoid newline characters in multiline string
-input1 "Hello"
-input2 "World"
displayName: 'Print Hello World'
Açık kaynak
Bu görev GitHubaçık kaynağıdır. Geribildirim ve katılımlar hoş geldiniz.
SSS
PowerShell betikleri hakkında nereden bilgi edinebilirim?
Windows PowerShell ile Betik Oluşturma
Microsoft betik Merkezi (komut dosyası Guyları)
Nasıl yaparım? betikler ve görevler tarafından okunsun diye bir değişken ayarlamak mı gerekir?
Bir betikte derleme değişkenlerini tanımlama hakkında daha fazla bilgi edinmek için bkz. Betikte derleme değişkenlerinizi tanımlama ve değiştirme.
Bir betikte yayın değişkenlerini tanımlama hakkında daha fazla bilgi edinmek için bkz. Betikte yayın değişkenlerinizi tanımlama ve değiştirme
S: Yapıtlarımı yayımlamayla ilgili sorunm var. Ayrıntılı günlükleri nasıl görüntüleyebilirsiniz?
İşlem hattınız için ayrıntılı günlükleri etkinleştirmek için:
- İşlem hattınızı düzenleyin ve Değişkenler'i seçin
- Ad ve değere sahip yeni bir
System.Debugdeğişken eklemetrue - Kaydet
S: Hangi değişkenler kullanılabilir?
A: $(Build.SourcesDirectory)$(Agent.BuildDirectory) ve, işlem hattında kullanabileceğiniz değişkenlerden yalnızca birkaçıdır. Değişkenler ifade veya betik olarak kullanılabilir.
Farklı değişken türleri hakkındabilgi edinmek için bkz.Değişkenleri tanımlama, önceden tanımlanmış değişkenler ve Klasik sürüm ve yapıt değişkenleri.
S: Görev yaml işlem hattında dağıtım iş yerinde yapıtları yayımlamama olanak sağlar, ancak bunu aşağı akış işlem hattında kullana değilim.
A: Dağıtım işleri kaynak dalların bağlamına sahip değildir ve bu nedenle yapıtları yayımlamak için uygun değildir. Bunlar öncelikli olarak yapıtları tüketmek üzere tasarlanmıştır. Geçici çözüm, bu mantığı ayrı bir iş (dağıtım işlerinize bağımlılıklar ile) halinde yalıtmaktır.
Bir aracıya ihtiyacım var mı?
Derlemenizi veya yayınını çalıştırmak için en az bir aracı gerekir.
Sorunlarımız var. Bunları nasıl gidererim?
Bkz. Derleme ve Sürüm Sorunlarını Giderme.
Varsayılan aracı havuzunu seçe değilim ve derlememi veya sürümümi kuyruğa ala bilmiyorum. Nasıl yaparım? düzeltebilir misiniz?
Bkz. Aracı havuzları.
My NuGet görev şu hatayla başarısız oluyor: "Hata: yerel sertifikayı verdiremiyor". Bunu nasıl düzeltebilirim?
Bu, güvenilen bir kök sertifika ekerek düzeltilmiştir. Ortam değişkenini derleme NODE_EXTRA_CA_CERTS=file aracınıza ekleyebilir veya görev değişkenini işlem NODE.EXTRA.CA.CERTS=file hattınıza ebilirsiniz. Bu Node.js hakkında daha fazla bilgi için bkz.Node.js belgeleri. İşlem hattınıza değişken ayarlama hakkında yönergeler için bkz. İşlem hattında değişken ayarlama.
Şirket içi TFS'yi kullanıyor ve bu özelliklerden bazılarını göremiyorum. Neden olmasın?
Bu özelliklerden bazıları yalnızca şirket Azure Pipelines şirket içinde kullanılamaz. TFS'nin en son sürümüne yükseltme yaptıysanız bazı özellikler şirket içinde kullanılabilir.