代码之家  ›  专栏  ›  技术社区  ›  Lews Therin

为什么在函数中的return语句之后打印Write Host消息[[关闭]

  •  0
  • Lews Therin  · 技术社区  · 8 年前

    我编写了以下函数,试图在Sql Server代理服务当前未运行时启动它:

    function Start-SqlAgent([string] $AgentServiceName)
    {
        $agentService = Get-Service -Name $AgentServiceName
    
        if ($AgentServiceName.Status -eq "Running")
        {
            Write-Host "$AgentServiceName is running"
            return
        }
    
        Write-Host "Starting $AgentServiceName..."
        # Code that starts the service below here (unrelated to my question)
    }
    

    当Sql代理服务运行时,我调用如下函数:

    Write-Host "Checking SQL Agent service status..."
    Start-SqlAgent -AgentServiceName "SQLSERVERAGENT"
    

    我得到以下输出:

    正在启动SQLSERVERAGENT。。。

    为什么 Starting SQLSERVERAGENT... 是否显示消息?我期望的结果是:

    正在检查SQL代理服务状态。。。

    1 回复  |  直到 6 年前
        1
  •  5
  •   Lews Therin    8 年前

    那是因为 $AgentServiceName 是字符串。你需要核对的是 $agentService

    $agentService = Get-Service -Name $AgentServiceName
    
    if ($agentService.Status -eq "Running")
    {
        Write-Host "$AgentServiceName is running"
        return
    }
    
    Write-Host "Starting $AgentServiceName..."
    
    推荐文章