2012-09-13 132 views
1

我使用PS Remoting,Powershell 2.0。函数在PowerShell中返回布尔值

我需要调用返回布尔值($ 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功能仅仅只能做写主机。

我使用它:

$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]真。”

WriteTrace "[TryDisableClientForCredSSP]. $ok" 

有什么建议?

回答

6

函数返回无论每个命令吐出到输出流。尝试删除像这样的输出:

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

如果您不喜欢使用[void],则可以添加'| out-null“来代替这些行。 –

+0

是不是有一个更简单的方法来停止输出,比如在命令后面使用分号? – Neolisk

+2

有三种方式:[void] ...,... | Out-Null和...> $ null。而已。 –