Extraction des informations de service SQL Server dans PowerShell, Escaping $ sign PowerShell

comment puis-je échapper une variable passée à get-service? Je suis en train de passer $ _. NAME et ce nom contiendra $ (dollar), ce qui le fera échouer.

Comment puis-je dire à powershell de ne pas considérer le $ à l'intérieur de cette variable et de le passer à get-service et de continuer à travailler?

foreach($machine in $machines) { Write-Output "$machine ACTIVE NOW: " Write-Output "---------------------------------" Get-Service -name "*sql*" -computername $machine -ErrorAction SilentlyContinue | Sort-Object -Property DisplayName | foreach{ $k = $machine + " - " + $_.DisplayName $v = $_Status $serviceStatus[$k] = $v Get-Service `$_.Name | Select-Object -ExpandProperty ServicesDependedOn | foreach{ $kd = $k + "has a dependency on " + $_.DisplayName $s = $_.Status $serviceStatus[$kd] = $s } } } 

Vous ne devriez pas avoir à échapper quelque chose avec votre script, cela devrait fonctionner si vous supprimez le back-tick avec $_.Name .

PowerShell est assez intelligent pour accepter des valeurs avec des caractères spéciaux comme valeurs littérales lorsque vous passez la propriété en utilisant la méthode dans votre script. Si vous l'avez enveloppé dans des doubles guillemets "$_.Name" SQL Server essaiera d'évaluer l'expression et ne transmettra que le MSSQL du nom de votre service d'instance.

Cette command s'exécute sans aucune erreur sur ma machine:

 Get-Service -name "*SQL*" -ErrorAction SilentlyContinue | sort-object -Property DisplayName | foreach { Get-Service $_.Name | select -ExpandProperty ServicesDependedOn} 

entrez la description de l'image ici