私は、自社のTFS 2015ビルド定義にPowershellスクリプトステップを追加しました。このスクリプトはAssemblyInfo.csファイルのアセンブリバージョンを変更します。カスタムpoweshellスクリプトの実行時にTFSビルドが失敗する
PowerShell ISEのビルドエージェントアカウントでスクリプトをテストしたところ、うまくいきました。ただし、TFSビルドでアクセス拒否エラーが発生してPowerShellの手順が失敗します。
ビルドエージェントアカウントには、C:\agent\_work\11\s\source\MyProject\Properties
フォルダに対するフルコントロールアクセス許可があります。
Get-Content: 'C:\ agent_work \ 11 \ s \ source \ MyProject \ Properties'へのアクセスが拒否されました。 C:¥agent_work¥11¥s¥source¥MyProject¥BuildScript¥Update-AssembyInfoFile.ps1:64 char:10 +(Get-Content $ file)| (C:\ agent_work ... MyProject \ Properties:String)[Get-Content]、無許可 アクセス例外 + + FullyQualifiedErrorId:GetContentReaderUnauthorizedAccessError、Microsoft.PowerShell.Commands.GetContentCommand
ローカルアカウント、ドメインアカウント、またはシステムアカウントのどの種類のビルドサービスアカウントですか?ビルドエージェントサーバーアカウントをコンピュータ管理者の別のアカウントに変更して、もう一度お試しください。それでも動作しない場合は、 "ネットワークサービス"アカウントを使用して実行してください。 –
[Manifestバージョン管理ビルドタスク拡張](https://marketplace.visualstudio.com/items?itemName=richardfennellBM.BM-VSTS-Versioning-Task&serverKey=null)をインストールし、「バージョン.NETアセンブリ"ビルドのassemblyinfo.csファイルにバージョンを設定するステップ。 –
TFSビルドサーバーは、TFS Windows 2012サーバーのローカル管理者グループのメンバであるドメインビルドエージェントアカウントで実行されます。また、ビルドエージェントアカウントはドメイン管理者グループのメンバです。スクリプトに追加のコードを追加して、スクリプトを実行するドメインとユーザー名を表示しました。出力は、スクリプトが期待通りにビルドエージェントアカウントによって実行されていることを確認しました。 – MBK