【问题标题】:Functions Returns Boolean in PowerShell函数在 PowerShell 中返回布尔值
【发布时间】:2012-09-06 11:09:05
【问题描述】:

我使用 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"

有什么建议吗?

【问题讨论】:

    标签: function powershell boolean return-value


    【解决方案1】:

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

        [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;
    

    【讨论】:

    • 如果您不喜欢使用 [void],您可以在这些行中添加 | out-null
    • 难道没有更简单的方法来停止输出,比如在命令后使用分号?
    • 有三种方式:[void]...,... | Out-Null 和 ... > $null。就是这样。
    • 我认为,您的答案中的三种方式的任何示例都会很棒。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 2013-03-11
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 2017-06-07
    • 2011-07-22
    相关资源
    最近更新 更多