对多个参数的不同响应

时间:2019-03-12 08:30:41

标签: powershell jenkins parameter-passing

我无法解决问题:

  1. 使用Jenkins / Groovy脚本,我正在使用这些参数来执行ps1文件:

    $myBuildTestNumber = "build-"+$env:BUILD_NUMBER;
    $rootDirectory = "\\\\myRootPath\\";
    $sn = "ibex.insight.reportrunner";
    Import-Module E:\\PSSDeployService.ps1 -ArgumentList $myBuildTestNumber,$rootDirectory,$sn
    
  2. .ps1文件如下所示:

    Param(
        [Parameter(Position=0,Mandatory=$false)][string]$BuildNumber,
        [Parameter(Position=1,Mandatory=$false)][string]$rootDirectorys,
        [Parameter(Position=2,Mandatory=$false)][string]$serviceName
    )
    Import-Module E:\PSSDeployServiceModule.psm1
    # Here I am calling a function 'DeployServiceProc' from the .psm1 file with the parameters
    DeployServiceProc $rootDirectorys $BuildNumber $serviceName;
    
  3. .psm1文件如下所示:

    function DeployServiceProc($rootDirectory, $BuildNumber, $serviceName) {
        function backupServiceFiles($rd,$bn,$sn) {
            "In Function 'backupServiceFiles'..."
            "rd: ${rd}";
            "Build Number: " + $bn;
            "Service Name: " + $sn;
            $serviceStatus = Get-Service $sn;
            "Service Status: " + $serviceStatus;
    
            if ($serviceStatus -eq 'Stopped') {
                #"Service is stopped, taking backup";
            }
        }
        Invoke-Command -ComputerName "myRemoteSystem.Name" -ScriptBlock ${function:backupServiceFiles} -ArgumentList $rootDirectory,$BuildNumber,$serviceName -Credential $Cred
    }
    

问题是: 如果我不提供三个参数,则代码:

$serviceStatus = Get-Service $sn;

工作正常。

但是如果我提供所有三个参数,代码将返回:

  

服务状态:System.ServiceProcess.ServiceController

我无法确定自己在做什么。

1 个答案:

答案 0 :(得分:1)

您是否可以尝试通过删除$ {rd}变量周围的引号并重试来运行命令(可能是使用此输出时3个变量之一):

"rd: ${rd}";

"rd:" ${rd};

对于某些类型的变量,使用引号输出变量类型,而不是变量的实际内容。

编辑1:

好的,写的时候

$serviceStatus = Get-Service $sn;

您获得了整个对象,但是如果我没记错的话,您想显示状态吗?

所以请尝试下一行代码

"Service Status: " + $serviceStatus.status;