我有一个要求,当有人在TFS - > Build explorer中停止正在运行的构建时,我需要执行PowerShell脚本.
是否有任何事件或方法可以将我的代码挂钩以实现该目的?
到目前为止,我只知道前后建设活动,但这些对我没有帮助.
注意:我们使用TFS进行源代码控制和构建.并使用Octopus Deploy在各种环境中进行开发.
我创建了一个DSC资源来复制某个源的Modules目录.我正在测试它在我的环境中进行更广泛的部署.资源确实很好,确保所有文件都存在,并且它们与源内容相匹配,到目前为止一直很好......
问题是这样的; 我想确保如果目标或目标中有任何其他文件,则删除它们的文件夹.
这是我的代码:
Configuration TestRun
{
Param
(
$ComputerName = 'Localhost'
)
Node $ComputerName
{
File LoadModules
{
Ensure = 'Present'
Type = 'Directory'
Force = $true
Recurse = $true
SourcePath = "C:\git\Modules"
DestinationPath = 'C:\users\Jason\Documents\WindowsPowerShell\Modules'
Checksum = "SHA-256"
MatchSource = $true
}
}
}
Run Code Online (Sandbox Code Playgroud)
在第一次运行配置后,我一直在目的地目录中创建一个名为Deleteme.flag的文件进行测试.到目前为止,我还没有运气实际被删除.
我尝试添加一个额外的文件提供程序要求,以在运行之前删除该目录:
File RemoveModules
{
Ensure = 'absent'
Type = 'Directory'
Force = $true
Recurse = $true
DestinationPath = 'C:\users\Jason\Documents\WindowsPowerShell\Modules'
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这失败并出现以下错误:
关键属性组合'C:\ users\Jason\Documents\WindowsPowerShell\Modules'与节点'Localhost'中资源'File'的键'DestinationPath'重复.请确保关键属性对于节点中的每个资源都是唯一的.
无论如何,我想用文件资源来做,但显然,使用脚本提供程序或其他一些自定义资源很容易做到这一点.在此先感谢您的帮助!
作为 Azure 资源组模板的一部分,我为我的 VM 设置了 PowerShell DSC 扩展,该扩展设置了各种 Windows 功能。
作为此自动化设置的一部分,我希望能够在防火墙中打开一些端口,经过一番研究后我发现有一个可用的 xFirewall DSC 模块。我的问题是如何在 DSC 执行之前自动将此模块安装到 Azure VM 上?
我的配置如下:
Configuration Main
{
Param ( [string] $nodeName )
Import-DscResource -ModuleName PSDesiredStateConfiguration
Import-DscResource -ModuleName xFirewall
Node $nodeName
Run Code Online (Sandbox Code Playgroud)
由于未安装模块,xFirewall 导入失败。
我曾考虑过创建另一个可以在此脚本之前运行的 DSC 脚本,但这证明很困难,因为一次只能将一个 DSC 扩展附加到虚拟机。
这是我找到值的平方的函数:
function Get-Square($value)
{
$result = $value * $value
return $result
}
$value = Read-Host 'Enter a value'
$result = Get-Square $value
Write-Output "$value * $value = $result"
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)PS C:\Users> .\Get-Time.ps1 Enter a value: 4 4 * 4 = 4444
为什么结果4444而不是16?谢谢.
有人可以举个例子说明如何在 PowerShell 中从 Windows Update 获取更新历史记录吗?
我在这里找到了 API 文档:https : //msdn.microsoft.com/en-us/library/windows/desktop/bb394842(v=vs.85).aspx
但是,关于如何从 PowerShell 调用它的内容很少。