如何在powershell中设置变量

如何在powershell中设置变量,powershell,azure-devops,azure-pipelines-release-pipeline,Powershell,Azure Devops,Azure Pipelines Release Pipeline,我正在尝试在PowerShell中设置变量,以便在发布定义的自定义条件中使用它们,以便在VSTS变量设置为false或0时阻止阶段运行。我道歉。我不是100%肯定我明白你想做什么 场景1:您希望在VST外部设置一些变量,这些变量由VST内部的发布定义使用 a我将这些设置为主机上的环境变量。您可以通过在该主机上运行的脚本调用它们。 b在单独的Powershell脚本中设置这些变量,然后从Powershell任务脚本中点源该脚本 场景2:您希望将变量值从VST传递到Powershell脚本 您将进入

我正在尝试在PowerShell中设置变量,以便在发布定义的自定义条件中使用它们,以便在VSTS变量设置为false或0时阻止阶段运行。我道歉。我不是100%肯定我明白你想做什么

场景1:您希望在VST外部设置一些变量,这些变量由VST内部的发布定义使用

a我将这些设置为主机上的环境变量。您可以通过在该主机上运行的脚本调用它们。 b在单独的Powershell脚本中设置这些变量,然后从Powershell任务脚本中点源该脚本

场景2:您希望将变量值从VST传递到Powershell脚本

您将进入Build and Release选项卡,选择Release,然后选择action New Definition。您正在创建一个空进程。将新工件添加到流程中。您最终可以将Powershell任务添加到实用程序任务之一。对于该任务,您可以选择运行的脚本以及传递给它的参数。这些参数是脚本中的参数。这类似于文章的创建发布定义中的步骤8/9


希望这有帮助

在PowerShell本身中设置变量很简单,只需为变量分配=运算符即可:

$VarName = 42
但问题很可能是寻找一种方法来设置环境变量,VSTS应用程序在从PowerShell调用时可以“查看”和“使用”

要将名称前缀指定给任何会话环境变量,请使用ENV,使其看起来像这样:

$Env:VarName = 4201
这将在当前PowerShell会话或控制台的生命周期内保留-其他窗口中的其他会话或以后运行的会话将不会看到这些设置,也不会受这些设置的影响

如果希望具有持久性环境变量,则必须在注册表中为用户HKey_Local_User或计算机HKey_Local_Machine设置该变量

这些将从注册表中获取环境设置,可能与当前在您的过程中设置的环境设置不同:

[Environment]::GetEnvironmentVariable('path',[EnvironmentVariableTarget]::Machine)
[Environment]::GetEnvironmentVariable('path',[EnvironmentVariableTarget]::User)
Set命令与之类似,但包含新值,例如变量“Tools”设置为“C:\”:

[Environment]::SetEnvironmentVariable('Tools', 'C:\', [EnvironmentVariableTarget]::Machine)
[Environment]::SetEnvironmentVariable('Tools', 'C:\', [EnvironmentVariableTarget]::User)
还有一个用于进程而不是用户或计算机的位置枚举,但使用上面显示的PowerShell$Env:VariableName进行设置更简单

    [Environment]::SetEnvironmentVariable('Tools', 'C:\', [EnvironmentVariableTarget]::Process)

甚至可以设置变量值,但不能使用修改后的变量值来阻止阶段运行,因为变量不能在代理阶段之间持久存在

你也可以参考这篇文章


关于在构建中设置变量的方法,您可以参考文档。

您需要使用具有特殊字符串格式的写入主机:


写入主机vso[task.setvariable=YourVSTSVariableName]$yourPowershellVariable

$variable\u name='value'表示字符串数据$variable\u name=数值数据的值。这如何处理VSTS变量?这需要用于相位条件。。如果有帮助的话?它显示了如何创建作用域变量。然后将变量组链接到你想访问的任何地方。听起来好像Ciaran O'Neill已经找到了答案。在标题中提到VST/AzureDevops。在powershell中设置变量与在使用powershell的VST中设置环境变量不同。这可能有助于其他人注意,YourVSTSVariableName应显示在“管道变量”选项卡中的格式字符串中。如果变量名有。在标签上以他们的名字,然后。应包含在格式字符串中。但是,当通过$env:yourvstVariableName访问值时。应替换为_。