【问题标题】:Passing parameter using variable While generating DSC configuration在生成 DSC 配置时使用变量传递参数
【发布时间】:2020-12-26 12:30:55
【问题描述】:

我正在从 Powershell 执行 Powershell DSC 脚本。下面是代码sn-p

Invoke-Command -ComputerName $public_ip_address -Credential $UserCredential -ScriptBlock {
    param ($driveformat)
    cd c:/provisioning
    Install-PackageProvider -Name NuGet -Force -Scope CurrentUser
    Install-Module -Name PSDscResources -Force
    Install-Module -Name xStorage -Force
    . .\DiskSetup.ps1
    disksconfig -outputpath C:\DataDiskSetting -driveFormat $driveFormat
    Start-DscConfiguration -Path C:\DataDiskSetting -Wait -Force -Verbose
} -ArgumentList ($driveformat)

在生成配置时,我想将驱动格式作为变量“$driveFormat”传递,而不是像“NTFS”这样的硬编码。不知何故,它没有获得 $driveformat 的价值,不知道我们如何解决这个问题。

【问题讨论】:

  • 你没有显示你定义$driveformat的位置
  • 它作为参数从 PS 脚本中的管道传递。
  • 好的,我们如何帮助您确定它为什么是空的?
  • 值是从管道传递的,例如“NTFS”

标签: powershell azure-devops powershell-dsc


【解决方案1】:

您可以在脚本中添加一个命名的参数 $driveformat。见下例:

Param([String]$driveformat)

Invoke-Command -ComputerName $public_ip_address -Credential $UserCredential -ScriptBlock {
    param ($driveformat)
    ...
} -ArgumentList ($driveformat)

然后在来自管道的powershell task 中,在参数字段中添加-driveformat "NTFS"。见下面的截图:(我定义了一个管道变量driveformat 来保存值“NTFS”)

或者,您可以在脚本中添加一个参数(例如$driveformat = $args[0])。见下文:

$driveformat = $args[0]

Invoke-Command -ComputerName $public_ip_address -Credential $UserCredential -ScriptBlock {
    param ($driveformat)
    ...
} -ArgumentList ($driveformat)

然后你可以直接在powershell任务的Arguments字段中传递变量(“NTFS”):

【讨论】:

    猜你喜欢
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多