- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用以下 DSC 配置(仅资源部分的片段,删除前导码、诊断和 SO 的 Start-DscConfiguration 部分):
Package TFSServer2013 {
Name = "Microsoft Team Foundation Server 2013 Update 3 (x64)"
Path = '$InstallerPath\Team Foundation Server 2013\tfs_server.exe'
Arguments = "/quiet"
Credential = $Credential
Ensure = "Present"
ProductID = "B516BA7C-3C20-3FCC-B130-B42058ABF87A"
}
File TFSUserFile {
DestinationPath = "$Env:TEMP\TFSConfig\TfsUserName.clixml"
Attributes = "Hidden"
SourcePath = $TFSUsernameFile
Ensure = "Present"
Force = $true
Credential = $Credential
Type = "File"
MatchSource = $true
}
File TFSPasswordFile {
DestinationPath = "$Env:TEMP\TFSConfig\TfsUserPassword.clixml"
Attributes = "Hidden"
SourcePath = $TFSUserPasswordFile
Ensure = "Present"
Force = $true
Credential = $Credential
Type = "File"
MatchSource = $true
}
File TfsBuildAgentConfigureScript {
DestinationPath = "$LocalInstallerPath\PowerShell\Configure-TfsBuildService.ps1"
SourcePath = "$POSModulePath\Configure-TfsBuildService.ps1"
Ensure = "Present"
Force = $true
Credential = $Credential
Type = "File"
MatchSource = $true
}
Script TFSConfigure {
SetScript = "
. C:\BuildAgent\Installers\PowerShell\Configure-TfsBuildService.ps1
Setup-TfsBuildService -ConfigIniFile 'C:\BuildAgent\Logs\TfsConfig.ini' -TfsBuildControllerName 'TFSMASTER' -TfsServiceUri 'http://mytfsservice:8080/tfs/My_Collection' -TfsUsernameClixml ""`$Env:TEMP\TFSConfig\TfsUserName.clixml"" -LogFilesPath 'C:\BuildAgent\Logs' -TfsUserPasswordClixml ""`$Env:TEMP\TFSConfig\TfsUserPassword.clixml""
if (`$false) { Remove-Item -Force -Path ""$Env:TEMP\TFSConfig\TfsUserPassword.clixml"" }
"
TestScript = "
New-EventLog -LogName 'Windows Powershell' -Source DSC -ErrorAction SilentlyContinue
Write-EventLog -LogName 'Windows PowerShell' -Source DSC -EntryType Information -EventId 1 -Message ""Testing if TFS build service is up and running.""
`$srv = Get-WmiObject -Class Win32_Service | Where-Object -FilterScript { (`$PSItem.Name -ne `$null) -and (`$PSItem.Name.Equals(""TFSBuildServiceHost.2013"")) }
return (`$srv -ne `$null)
"
GetScript = "
New-EventLog -LogName 'Windows Powershell' -Source DSC -ErrorAction SilentlyContinue
`$ensure='Absent'
if (Test-Path 'C:\BuildAgent\Logs\TfsConfig.ini' -ErrorAction Ignore) { `$ensure = 'Present' }
Write-EventLog -LogName 'Windows PowerShell' -Source DSC -EntryType Information -EventId 1 -Message ""TFSConfigure GetScript (C:\BuildAgent\Logs\TfsConfig.ini): Ensure=`$ensure""
@{Ensure=`$ensure}
"
Credential = $Credential
DependsOn = "[File]TFSPasswordFile","[File]TFSUserFile","[Package]TFSServer2013","[File]TfsBuildAgentConfigureScript"
}
我在无人参与模式下配置 TFS 构建服务的脚本如下(出于 SO 的目的,我已经删除了日志记录、错误检查和诊断):
Function Setup-TfsBuildService
{
Param(
[Parameter(Mandatory=$true)]
[string]
$ConfigIniFile,
[Parameter(Mandatory=$true)]
[string]
$TfsBuildControllerName,
[Parameter(Mandatory=$true)]
[string]
$TfsServiceUri,
[Parameter(Mandatory=$true)]
[string]
$TfsUsernameClixml,
[Parameter(Mandatory=$true)]
[string]
$LogFilesPath,
[Parameter(Mandatory=$true)]
[string]
$TfsUserPasswordClixml,
[Parameter()]
[string]
$TfsConfigExePath="$Env:ProgramFiles\Microsoft Team Foundation Server 12.0\Tools\TfsConfig.exe"
)
if (Test-Path -Path $TfsUsernameClixml)
{
$tfsuser = (Import-CliXml -Path $TfsUsernameClixml)
}
else { return }
Remove-Item -Force -Path $ConfigIniFile -ErrorAction SilentlyContinue
# Stop any existing TFS 2013 build service
if (Get-Service -Name "TFSBuildServiceHost.2013" -ErrorAction Ignore)
{
$srv = Get-WmiObject -Class Win32_Service | Where-Object -FilterScript { ($PSItem.Name -ne $null) -and ($PSItem.Name.Equals("TFSBuildServiceHost.2013")) }
$srv.StopService() | Out-Null
$srv.Delete() | Out-Null
}
# Create the unattend file:
$inputparams = "ConfigurationType=scale;AgentCount=1;ExistingControllerName=$TfsBuildControllerName;CleanResources=True;CollectionUrl=$TfsServiceUri;IsServiceAccountBuiltIn=False;ServiceAccountName=$tfsuser"
$tfsconfoutput = & $TfsConfigExePath unattend /create /type:build /unattendfile:"$ConfigIniFile" /inputs:$inputparams 2>&1
$tfsconfoutput | Out-File -FilePath (Join-Path $LogFilesPath "TfsConfigUnattendFile.log") -Force
# Install the service:
$Error.Clear()
$tfsuserpswd = (Import-CliXml -Path $TfsUserPasswordClixml)
$tfsconfoutput = & $TfsConfigExePath unattend /configure /unattendfile:"$ConfigIniFile" /inputs:"ServiceAccountPassword=$tfsuserpswd" /continue 2>&1
Remove-Variable tfsuserpswd
$tfsconfoutput | Out-File -FilePath (Join-Path $LogFilesPath "TfsInstallUnattend.log") -Force
}
只要我在本地登录,我就可以在我的任何构建 Windows 2012 R2 代理上成功运行脚本 Configure-TfsBuildService.ps1。
除了 TFS 构建服务配置 block 之外,我还可以针对我的所有构建代理成功运行我的 DSC 配置。
但是,当我尝试运行我的 TFS 构建服务配置 block 时,我的 DSC 配置“成功”,但是该服务的无人值守配置失败并显示以下日志消息:
[Info @15:40:47.754] +-+-+-+-+-| Verifying that the running account has required Team Foundation Server permissions |+-+-+-+-+-
[Info @15:40:47.754] Starting Node: TBPERMISSIONS
[Info @15:40:47.754] NodePath : VINPUTS/Progress/Conditional/TBPERMISSIONS
[Error @15:40:47.920]
Exception Message: TF30063: You are not authorized to access http://mytfsservice:8080/tfs/My_Collection. (type TeamFoundationServerUnauthorizedException)
Exception Stack Trace: at Microsoft.TeamFoundation.Client.Channels.TfsHttpWebRequest.SendRequest()
at Microsoft.TeamFoundation.Client.Channels.TfsHttpRequestChannel.Request(TfsMessage message, TimeSpan timeout)
at Microsoft.TeamFoundation.Client.Channels.TfsHttpClientBase.Invoke(TfsClientOperation operation, Object[] parameters, TimeSpan timeout, Object[]& outputs)
at Microsoft.TeamFoundation.Framework.Client.LocationWebService.Connect(Int32 connectOptions, Int32 lastChangeId, Int32 features)
at Microsoft.TeamFoundation.Framework.Client.FrameworkServerDataProvider.Connect(ConnectOptions connectOptions)
at Microsoft.TeamFoundation.Admin.AuthenticatedCollectionProvider.Microsoft.TeamFoundation.Admin.IAuthenticatedCollectionProvider.GetAuthenticatedConnection()
at Microsoft.TeamFoundation.Admin.VerifyPermissionsToConfigure.Run(ActivityContext context)
Inner Exception Details:
Exception Message: The remote server returned an error: (401) Unauthorized. (type WebException)Status: ProtocolError
Response Status Code: Unauthorized
Response Status Message: Unauthorized
Exception Stack Trace: at System.Net.HttpWebRequest.GetResponse()
at Microsoft.TeamFoundation.Client.Channels.TfsHttpWebRequest.SendRequestAndGetResponse(HttpWebRequest webRequest, WebException& webException)
[Info @15:40:47.920] Node returned: Error
[Error @15:40:47.920] TF30063: You are not authorized to access http://mytfsservice:8080/tfs/My_Collection.
[Info @15:40:47.920] Completed BuildServicePermissions: Error
[Info @15:40:47.920] -----------------------------------------------------
由于我使用自己的凭据运行 DSC 配置,并且我是 TFS 服务的项目集合管理员,因此不存在权限问题。我已经通过在代理计算机上本地成功运行配置脚本并在那里取得成功证明了这一点。
我意识到 PowerShell 不允许双跳权限,但由于 DSC 在涉及的代理上执行,因此不应该存在双跳凭据问题,并且允许将权限中继到 TFS注册服务。
也许我错过了一些更琐碎的事情?
编辑:TFS 2012/2013 无人值守安装的描述可在此处找到:http://blogs.msdn.com/b/visualstudioalm/archive/2012/10/12/unattended-installation-of-team-foundation-server-2012.aspx
最佳答案
您可能仍会遇到双跃点问题。 DSC 需要 WinRM,即使在推送模式下运行时也是如此,因为无论它在执行配置时将什么“远程处理”到机器中。这仍然算作一跳。
考虑这两个执行:
$sb = { Get-Content \\server\share\file.txt }
Invoke-Command -ScriptBlock $sb
Invoke-Command -ComputerName . -ScriptBlock $sb
第一次调用应该有效(没有使用该参数集进行远程处理)。第二个应该因权限错误而失败。
关于powershell - 为什么我不能通过 Powershell DSC 在无人值守模式下配置 TFS 构建服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26304425/
我正在探索 DSC 并想知道将 DSC 资源复制到目标主机的最佳方法是什么? 当我尝试将我的配置推送到目标主机时,它提示缺少 DSC 资源。 The PowerShell DSC resource x
我有一个为 Web 服务器配置创建的 DSC。我的网站将使用 HTTPS,这意味着我必须在商店中获得证书。我没有看到任何旨在执行此操作的模块,所以我想知道如何在 DSC 中运行常规 Powershel
这两种通过 PowerShell 的 Desired State Configuration 配置虚拟机的方法有何优缺点? 我听说 Azure Automation DSC 的初始学习曲线更陡峭,但从
我正在尝试将 VM 载入 Azure Automation DSC。我们可以添加来自不同订阅的虚拟机作为 DSC 节点吗? 最佳答案 您将无法使用 Register-AzureRMAutomation
以下 DSC 声明写入注册表项 HKEY_USERS.DEFAULT\Console 而不是 HKEY_CURRENT_USER\Console。为什么? Registry ConsoleFaceNa
有人知道如何获取当前 DSC 工作文件夹吗? 在服务器上,当 DSC 运行时,它会生成如下文件夹结构: C:\Packages\Plugins\Microsoft.Powershell.DSC\2.1
我正在尝试使用此基本模板 http://4c74356b41.com/post5775 使用 SQL Server 2016 AlwaysOn 可用性组创建 Azure RM 模板我链接的模板对我来说
我正在尝试使用此基本模板 http://4c74356b41.com/post5775 使用 SQL Server 2016 AlwaysOn 可用性组创建 Azure RM 模板我链接的模板对我来说
我正在尝试通过 DSC 配置目标节点。 我创建了一个带有虚拟配置的 .ps1 文件;你可以在下面看到它;这只是您在 DSC 站点中找到的首批示例之一。 现在我想把它编译成 .mof 文件。 我已经执行
我已成功创建 DSC 配置并将它们部署到服务器上。作为下一步,我尝试将服务器中常见的配置 block 的部分分解为可重用的部分,或者用 DSC 的说法“复合资源”。经过大量研究后,我仍然无法使用复合资
我正在使用 PowerShell 4.0 并配置了 DSC Pull Server。很少有客户端连接到 Pull Server,并且这些客户端正在正确获取配置。以下是客户端计算机中的 LCM 详细信息
是否可以从互联网上下载一些软件,然后使用 DSC 在我的一些服务器上安装它? Chrome ,例如?所有 DSC 教程都很难理解(至少对我而言)。我只想看一个简单的例子,类似于我的用例。 最佳答案 您
我正在尝试使用PowerShell DSC将我们的软件部署到客户端PC。在我所见过的大多数DSC教程或示例中,DSC似乎都用于部署服务器软件。 在客户端 PC上使用DSC是否有意义? 注意事项: 我已
这似乎无法正常工作 我有以下脚本资源。 Script RDGatewayCreateRAP { SetScript = { $
我有一个安装 nodejs 的 DSC 配置,将 npm 添加到环境路径变量,然后安装一个 npm 模块。 xPackage InstallNodeJs { Name = 'N
我正在尝试在 PowerShell 中使用 DSC 来部署服务。根据Microsoft Documentation ,服务资源有以下可以设置的属性: 姓名 确保 内置帐户 凭据 取决于 参数 启动类型
我的 LocalConfigurationManager 设置如下: [DSCLocalConfigurationManager()] Configuration LCMConfig { No
我尝试先卸载某个软件包,然后安装该软件包的最新版本。您可能会认为很简单,但是当我在 DSC 配置中包含以下代码时: ### remove old product setup Packa
我在存档 DSC 模块 (MSFT_ArchiveResource.psm1) 中发现了一个错误。复制代码、在 ISE 中调试并找出需要修复的两行后,我想对真实文件进行更改并使用 Puppet 和 m
我有一个 DSC 资源,它安装 dotnet 功能,然后安装 dotnet 更新。 在本地配置管理器中,我设置了 RebootNodeIfNeeded至$true . dotnet 安装后,它不会请求
我是一名优秀的程序员,十分优秀!