函数在PowerShell中返回布尔值

时间:2012-09-13 11:12:35

标签: function powershell boolean return-value

我使用PS Remoting,Powershell 2.0。

我需要调用返回布尔值的函数($ true或$ false)。

我的功能:

Function TryDisableClientForCredSSP()
{
    try 
    {
        WriteTrace "[TryDisableClientForCredSSP]. Disable-WSManCredSSP -Role Client "
        $script=Convert-StringToScriptBlock("Disable-WSManCredSSP -Role Client ")
        Caller($script)

        WriteTrace "[TryDisableClientForCredSSP]. winrm get winrm/config/client/auth [($env:COMPUTERNAME)]"
        $script=Convert-StringToScriptBlock("winrm get winrm/config/client/auth")
        Caller($script);

        return $true;
    }
    catch 
    {
        Write-Verbose "[TryDisableClientForCredSSP] Error "
        Write-Verbose $_
        Write-Host $_.Exception.Message`r`n
        return $false;
    }   
}

注意:WriteTrace函数只执行Write-Host。

我用它:

    $ok = TryDisableClientForCredSSP;
    WriteTrace   "[TryDisableClientForCredSSP]. $ok"
    if ($ok -eq $true)
    {
        WriteTrace "[TryDisableClientForCredSSP]. OK true"
    }
    else
    {
        WriteTrace "[TryDisableClientForCredSSP]. KO false"
    }

我得到了这个输出:

[TryDisableClientForCredSSP]. Auth     Basic = true     Digest = true     Kerberos = true     Negotiate = true     Certificate = true     CredSSP = false  True
[TryDisableClientForCredSSP]. OK true

我希望此行输出“[TryDisableClientForCredSSP]。True”

 WriteTrace   "[TryDisableClientForCredSSP]. $ok"

有什么建议吗?

1 个答案:

答案 0 :(得分:7)

函数返回每个命令吐出到输出流的任何内容。尝试消除这样的输出:

    [void]WriteTrace "[TryDisableClientForCredSSP]. Disable-WSManCredSSP -Role Client "
    $script=Convert-StringToScriptBlock("Disable-WSManCredSSP -Role Client ")
    [void]Caller($script)

    [void]WriteTrace "[TryDisableClientForCredSSP]. winrm get winrm/config/client/auth [($env:COMPUTERNAME)]"
    $script=Convert-StringToScriptBlock("winrm get winrm/config/client/auth")
    [void]Caller($script);

    return $true;