2016-12-01 8 views
0

私はこのレジストリキーが存在するかどうかを言うために以下のコマンドを実行しようとしていますが、Get-ItemProperty Elseは何もしません。 REGキーが存在しない場合は、今、それは代わりに、何とか結果を{}に置くためもしInvoke-Command Powershell内のElse

"SQL Server Product Name" = Invoke-Command -ComputerName $Computer -ScriptBlock {If (Test-Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names") { Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object -FilterScript { (($_.Publisher -like "Microsoft*") -and ($_.DisplayName -like "Microsoft SQL Server*(*-bit)")) } | Select-Object -first 1 -ExpandProperty DisplayName } else {Write-Host "Blah"}} 

それ以外は何もしていないようです。 Ifステートメントが動作しているかどうかは、Get-ItemPropertyを実行しているにもかかわらず、パスが存在すれば期待される結果が得られても関係ないので、私は正確にはわかりません。

答えて

2

この例の問題は、ElseスクリプトブロックがWrite-Hostを使用していることです。これをリモートマシンで実行すると、ホストはそのリモートコンピュータ上のPowerShellセッションになります。リモートマシン上にGUIなしでテキストをセッションに書き込んでいます。

これを修正するには、Write-Hostコマンドレットを削除してください。引用されたテキストは、リモートセッションでスクリプトブロックが実行されたときにスクリプトブロックによって出力されたものと一緒にローカルセッションに戻されます。

+0

OMG、ありがとう、私は狂っていたと思った。 – pinchepooch

関連する問題