2017-09-28 1 views
0

Je ne sais pas pourquoi ce script ne fonctionne pas pour moi. Lorsque je tente de l'exécuter, il va juste à la ligne suivante et a « >> » à gauche au lieu de PS C: \ Users \ nom d'utilisateur>Script Powershell pour détecter le système d'exploitation et afficher les versions de SQL installées sur le système SI le système est un serveur

$Version = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\Currentversion" -Name Productname).Productname | if ($version -like "*server*") {Get-ItemProperty HKLM:\software\microsoft\windows\currentversion\uninstall\* | Where-Object {$_.displayname -match "sql server"} 

Quelqu'un voit-ce que je l'ai fait mal ici? Je peux vérifier que les deux parties fonctionnent indépendamment, je semble juste avoir un problème quand je les mets ensemble avec une déclaration if.

Modifier: $version = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\Currentversion" -Name Productname).Productname ; if ($version -like "*server*") { Get-ItemProperty HKLM:\software\microsoft\windows\currentversion\uninstall\* | Where-Object {$_.displayname -match "sql server"} } Cela a fonctionné!

+1

Parce que vous avez 'if() {chose | où {} 'et manquent un'} '. et vous ne pouvez pas faire 'get-thing | si ... 'du tout – TessellatingHeckler

+0

Y at-il un moyen de trouver la version du système d'exploitation et seulement sur les serveurs exécuter la commande pour afficher les versions SQL? – Maxadon

+0

Avez-vous un répertoire actif? – ArcSet

Répondre

0

Vous devez d'abord attribuer la version $. Cela peut ensuite être utilisé dans votre instruction if.

$version = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\Currentversion" -Name Productname).Productname 

if ($version -like "*server*") 
{ 
    Get-ItemProperty HKLM:\software\microsoft\windows\currentversion\uninstall\* | Where-Object {$_.displayname -match "sql server"} 
} 

Merci, Tim.