2017-04-03 28 views
0

私は、自社の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

+0

ローカルアカウント、ドメインアカウント、またはシステムアカウントのどの種類のビルドサービスアカウントですか?ビルドエージェントサーバーアカウントをコンピュータ管理者の別のアカウントに変更して、もう一度お試しください。それでも動作しない場合は、 "ネットワークサービス"アカウントを使用して実行してください。 –

+0

[Manifestバージョン管理ビルドタスク拡張](https://marketplace.visualstudio.com/items?itemName=richardfennellBM.BM-VSTS-Versioning-Task&serverKey=null)をインストールし、「バージョン.NETアセンブリ"ビルドのassemblyinfo.csファイルにバージョンを設定するステップ。 –

+0

TFSビルドサーバーは、TFS Windows 2012サーバーのローカル管理者グループのメンバであるドメインビルドエージェントアカウントで実行されます。また、ビルドエージェントアカウントはドメイン管理者グループのメンバです。スクリプトに追加のコードを追加して、スクリプトを実行するドメインとユーザー名を表示しました。出力は、スクリプトが期待通りにビルドエージェントアカウントによって実行されていることを確認しました。 – MBK

答えて

0

スクリプトエラーは、ファイルパスにファイル名が欠落によって引き起こされました。 パス 'C:\ agent_work \ 11 \ s \ source \ MyProject \ Properties'へのアクセスが拒否されました。は混乱させるものですが、パスにファイル名がないことを示しています。エラーメッセージのパスは、ファイル名ではなくフォルダ名です。したがって、エラーが発生しました。

+0

共有いただきありがとうございます。回答を回答としてマークしてください。 –