私はループする必要のあるサーバの配列を持っており、特定のサーバだけに属性が割り当てられています。ここでもしもforeach内のIf-elseが私が思うものを返さない場合
が配列です:アレイでは
$test = @('test_dc','test_fp','test_ts','test_ap')
、私は(この順序で)ドメインコントローラ、ファイル/プリント、ターミナルサーバー、およびアプリケーションサーバーを持っています。
属性を取得する必要があるサーバーは、fp、ts、およびapサーバーだけです。
は、ここで私はこれまで試したものです:
foreach ($item in $test) {
Write-Host $item "`n"
Write-Host "Start IF here `n"
if ($item.Name -like '*fp*') {
Write-Host "Found $item"
} else {
Write-Host "ELSE `n"
Write-Host '-=-=-=-=-'
}
}
ここでそれからの出力があります:
PS C:\Users\me\Desktop> .\scratch.ps1 test_dc Start IF here ELSE -=-=-=-=- test_fp Start IF here ELSE -=-=-=-=- test_ts Start IF here ELSE -=-=-=-=- test_ap Start IF here ELSE -=-=-=-=- PS C:\Users\me\Desktop>
私はそれが動作するはずだと思うの方法によると、私はこれが表示されます。
... test_fp Found test_fp ...
私もこれを試しました:
if ($test -contains '*fp') {
Write-Host "Found $_"
} else {
Write-Host 'end'
}
と空白行が表示されます。
ワイルドカードとして扱うかのように文字列のアスタリスク部分を使用することは、powershellでは機能しません。アスタリスクを削除して試してみてください。その場合は正規表現パターンを使用してください。 – t0mm13b
'$ item'は普通の文字列です。' name'プロパティはありません。 '$ item.name -like '* fp *''を '$ item -like '* fp *''に変更してください –
それを画面上で見る唯一の目的はありますか? Write-Hostができるのはこれだけです。それはリダイレクトできません。 – lit