2016-09-29 19 views
0

"文字列は何ですか?" -not _ "/"文字列に_以外の文字列が含まれていますか?-Contain - なし:文字列に "以外のもの"が含まれています

私は十分な回避策を見つけたので、私は立ち往生していません。他の何よりも多くの好奇心。

例:

$String = 1,1,1,2,5 
$String -contains !(1) 

これは常に起動した偽

瞬間に私のソリューションは、1の削除と、それはそうのようなヌルだかどうかを確認することです。

$String2 = $String -ne 1 
if ([String]::IsNullOrEmpty($String2)) { 
    Write-Host "True" 
} else { 
    Write-Host "False" 
} 

実世界の例:

私のスクリプトは、動作するまで一定の行動を試みるように設計されています。この場合、get-msoluser。 私のスクリプトの最後に、エラーを数えたい(そして後でリストしたい)が、 "get-msoluser"のエラーが表示され、それが動作するまで失敗する。だから私はカウントに特定のエラーを含めないようにしています。

$Errors = $Error.InvocationInfo.MyCommand.Name 
if ($Errors -contains !("get-msoluser")) { 
    Write-Host "There was an error I actually care about" 
} 

INSTEAD私はこれをしなければならない。

$Errors = $Error.InvocationInfo.MyCommand.Name 
$ErrorsICareAbout = $Errors -ne "get-msoluser" 
if ([String]::IsNullOrEmpty($ErrorsICareAbout)) { 
    Write-Host "$ErrorsICareAbout.Count" 
} else { 
    Write-Host "There were errors you actually cared about" 
} 

私は右の私の鼻の下に何か足りませんか?

+0

あなたは場合 'みました(!($エラー-contains(は、 "get-msoluser")))' –

+0

うん。私の鼻のすぐ下に。ありがとう! – kgs499

+0

'-notcontains'はあなたが探している演算子です。 – wOxxOm

答えて

0
のようなものを使用することができます

If ($Errors -notcontains ("get-msoluser")) 
0:

あなたは、単に-notcontainsを使用するか、そして全体の周りにこのような-contains比較しない演算子を追加する必要があります

または

If (!($Errors -contains ("get-msoluser"))) 
0

エラーを除外するのではなく、最初にエラーを生成しないでください。特定のコマンドのエラーを抑制するには、エラーアクションをSilentlyContinueに設定します。

Write-Error 'fail' -ErrorAction SilentlyContinue 

のGet-MsOlUserが動作するまで、だから、再試行の場合には、あなたが

while($msolUser -eq $null) { 
    $msolUser = Get-MsOlUser ... -ErrorAction SilentlyContinue 

    #Wait a second before retrying. 
    Start-Sleep -Seconds 1 
} 

#Now work with $msolUser 

(おそらく、また、再試行の回数に上限を置きたい)

+0

私は現在、これを使ってpowershell画面のエラーを抑止していますが、$ error変数の中に入っているようです。 2回目以降の再試行は、実行中の人が手動で行い、「移動」キャンセルポップアップボタンで行います。 – kgs499

関連する問題