我编写了函数'A',它将调用许多其他函数之一.为了保存重写函数'A',我想传递函数作为函数'A'的参数调用.例如:
function A{
Param($functionToCall)
Write-Host "I'm calling : $functionToCall"
}
function B{
Write-Host "Function B"
}
Function C{
write-host "Function C"
}
A -functionToCall C
Run Code Online (Sandbox Code Playgroud)
返回:我正在打电话:C
我期待它回归:我在呼唤:功能C.
我尝试了各种各样的东西,比如:
Param([scriptblock]$functionToCall)
Run Code Online (Sandbox Code Playgroud)
无法将System.String转换为ScriptBlock
A -functionToCall $function:C
Run Code Online (Sandbox Code Playgroud)
返回"写主机"功能C"
A - functionToCall (&C)
Run Code Online (Sandbox Code Playgroud)
这在其余部分之前进行评估:
Function C
I'm Calling :
Run Code Online (Sandbox Code Playgroud)
我确定这是编程101,但我无法弄清楚正确的语法或它是什么我做错了.我们将非常感激地提供任何帮助.非常感谢.
是否可以在模板 YAML 中包含参数及其值,并在准备运行管道时让主 YAML 读取列表并将它们显示在下拉列表中?
与“变量重用”的 MS 示例非常相似,如下所示。
# File: vars.yml
variables:
favoriteVeggie: 'brussels sprouts'
Run Code Online (Sandbox Code Playgroud)
# File: azure-pipelines.yml
variables:
- template: vars.yml # Template reference
steps:
- script: echo My favorite vegetable is ${{ variables.favoriteVeggie }}.
Run Code Online (Sandbox Code Playgroud)
我有一个大约 50 个值的列表,这些值每周都在增长。当运维人员运行我的管道时,我希望他们从下拉列表中选择一个值。
这可以简单地通过在管道 YAML 文件中指定参数块来实现azure-pipeline.yml:
parameters:
- name: subscription
displayName: Subscription Name
type: string
default: sub A
values:
- sub A
- sub B
- sub C
- sub D
Run Code Online (Sandbox Code Playgroud)
这给了我 UI 中的下拉菜单:
在上面的示例中,只有 4 个值,但是,我们有超过 50 …
我有一个想要运行的 YAML 管道,但我不知道如何告诉 GitHub 使用我的文件并阻止它创建新文件。
yaml 文件位于.github/workflows我的develop分支中。
在 GitHub 的“操作”下,如果我单击“自己设置工作流程”,则会执行以下操作:
路径是正确的,但它默认为默认master分支,单击master只会将我带到视图code。我找不到方法将其更改为develop
我相信代码的相关部分是:
name: CI
# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the main branch
push:
branches: [ master ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,workflow_dispatch应该允许它手动运行,但它似乎没有列出。
我确信这是 101,但我无法算出来。如果有人有任何想法,请分享,我将不胜感激。
@flaxon 向我展示了如何更改 URL 以指向正确的分支后,我仍然无法运行工作流程。即使我让 GitHub …
我正在尝试找到一种方法来返回给定文件夹的完整路径.问题是如果有一个类似的命名文件夹,我的代码会返回多个文件夹.例如,搜索"Program Files",返回"Program Files"和"Programs Files (x86) ".因为我没有要求"程序文件(x86),我不希望它返回它.我正在使用:
$folderName = "Program Files"
(gci C:\ -Recurse | ?{$_.Name -match [regex]::Escape($folderName)}).FullName
Run Code Online (Sandbox Code Playgroud)
我想用-eq替换-match,但它会在比较整个路径时返回$ false.
我想过可能会返回所有匹配项,然后要求用户选择哪一个是正确的,或者创建一个数组,将路径拆分并在每个文件夹名称上执行-eq然后再次加入路径,但我的技能缺乏在数组部门,无法让它工作.
我们将非常感激地提供任何帮助或指示.
谢谢
感谢Frode,这是我用过的东西:
$path = gci -Path "$drive\" -Filter $PartialPath -Recurse -ErrorAction SilentlyContinue #| ?{$_.PSPath -match [regex]::Escape($PartialPath)}
($path.FullName | gci -Filter $filename -Recurse -ErrorAction SilentlyContinue).FullName
Run Code Online (Sandbox Code Playgroud) 我有一个小的 C# 应用程序,当一个新的 blob 被添加到存储帐户中的容器时,它会做一些事情。
我正在使用 Visual Studio 2017 在本地工作。
VS 模板给了我:
using System.IO;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
namespace LogicAppTriggerFunction
{
public static class BlobTrigger
{
[FunctionName("BlobTrigger")]
public static void Run([BlobTrigger("samples-workitems/{name}", Connection = "")]Stream myBlob, string name, ILogger log)
{
log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试图"samples-workitems"用一个与我的容器名称相关的变量来替换。我只想使用一个容器,但我不想对其进行“硬编码”。
如果我在正确的行上,则此设置存储在function.json编译时构建的内容中。在本地工作时,我认为 / 认为 的内容function.json是由 读取的local.settings.json,但是我现在认为这是针对 appSettings.json。
阅读 MS doco,尤其是在trigger bindings 上,看起来myContainer/{name}应该从 …
我正在尝试解决如何使用 Terraform 0.12.10 从以下 tfvars 文件中给出的复杂对象中迭代嵌套变量:
virtual_network_data = {
1 = {
product_instance_id = 1
location = "somewhere"
address_space = ["192.168.0.0/23"]
dns_servers = []
custom_tags = {"test":"test value"}
subnets = [
{
purpose = "mgmt"
newbits = 4
item = 0
},
{
purpose = "transit"
newbits = 4
item = 1
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
variable "virtual_network_data" {} #Data comes from example.tfvars
variable "resource_group_name" {
default = "my_resource_group"
}
variable "virtual_network_name" {
default = "my_virtual_network"
}
#### …Run Code Online (Sandbox Code Playgroud) 它看起来像我期待这种方式工作的方式不是.我想要返回多个对象,但它似乎只返回一个.我不知道如何做到这一点.
一个非常简单的JSON文件:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"value": "sa01"
},
"virtualNetworkName": {
"value": "nvn01"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想动态地将参数及其值添加到一个漂亮的pscustomobject中(对于上面的数据看起来如下):
ParameterName | Value
===========================
storageAccountName | sa01
virtualNetworkName | nvn01
Run Code Online (Sandbox Code Playgroud)
我不明白为什么以下返回一个对象:
$TemplateParametersFile = "C:\Temp\deploy-Project-Platform.parameters.json"
$content = Get-Content $TemplateParametersFile -Raw
$JsonParameters = ConvertFrom-Json -InputObject $content
$JsonParameters.parameters | Measure-Object
Run Code Online (Sandbox Code Playgroud)
在写这篇文章的同时,我最终找到了一个能够得到我想要的解决方案,我将在答案部分发布.随意上学,改进......
我确信这真的很简单,但我无法解决。
我想删除该目录C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1。到目前为止,我的尝试已成功删除目录中的所有内容1.0.0.1,但我无法弄清楚如何删除实际目录。
我确实考虑过提升一个级别,但这意味着当我复制该模块的新版本 ( 2.2.5) 时,在下次运行时,Puppet 将删除它。
这是我的两次尝试:
file { "${modules_path}/PowerShellGet/1.0.0.1" :
ensure => directory,
recurse => true,
purge => true,
force => true,
}
Run Code Online (Sandbox Code Playgroud)
tidy { "${modules_path}/PowerShellGet/1.0.0.1" :
age => 0,
recurse => true,
rmdirs => true,
}
Run Code Online (Sandbox Code Playgroud)
TIA
powershell ×3
azure ×2
azure-devops ×1
directory ×1
exact-match ×1
json ×1
match ×1
puppet ×1
terraform ×1