0

我正在尝试运行以下命令来说明此注册表项是否存在然后 Get-ItemProperty Else Do nothing 或 Display Text for Testing。

"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"}}

Else 似乎没有做任何事情,因为现在如果 reg 键不存在,它会将 {} 放入结果而不是 Blah。我不确定 If 语句是否有效,因为我认为它可能只是运行 Get-ItemProperty 无论如何,因为如果该路径存在,我会得到预期的结果。

4

1 回答 1

2

您的示例的问题是Else脚本块使用Write-Host. 当您在远程计算机上执行此操作时,主机是该远程计算机上的 PowerShell 会话。您正在将文本写入远程计算机上没有 GUI 的会话。

要解决此问题,只需删除Write-Hostcmdlet。当脚本块在远程会话上执行时,引用的文本将与脚本块输出的任何其他内容一起传递回您的本地会话。

于 2016-12-01T21:33:01.283 回答