I have been trying to get below code to work - check 1st what is running sql server service and check if that service account is local admin on machine if so remove it:
[string]$sqlInstance
$sqlInstance = 'TEST'
[System.Reflection.Assembly]::LoadWithPartialName(“Microsoft.SqlServer.SqlWmiManagement”) | out-null
$SMOWmiserver = New-Object (‘Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer’) $sqlInstance #pull in the server you want
$SMOWmiserver.Services | Select-Object name, type, ServiceAccount, DisplayName | where {$_.type -eq “SqlServer” -and $_.displayName -eq "SQL Server (MSSQLSERVER)"} | Select-object ServiceAccount -outvariable $name
Get-LocalGroupMember -group 'administrators' -member $name
Remove-LocalGroupMember -group 'administrators' -member $name
I keep getting the error: for both get and remove:
Remove-LocalGroupMember -group 'administrators' -member $name
Remove-LocalGroupMember : Cannot bind parameter 'Member'. Cannot convert value "@{ServiceAccount=domain\usertest}" to type
"Microsoft.PowerShell.Commands.LocalPrincipal". Error: "Cannot convert the "@{ServiceAccount=domain\usertest}" value of type
"Selected.System.Management.Automation.PSCustomObject" to type "Microsoft.PowerShell.Commands.LocalPrincipal"."
At line:2 char:60
+ Remove-LocalGroupMember -group 'administrators' -member $name
+ ~~~~~
+ CategoryInfo : InvalidArgument: (:) [Remove-LocalGroupMember], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.RemoveLocalGroupMemberCommand
I have tried hardcoding the value to get and remove then it works:
Get-LocalGroupMember -group 'administrators' -member 'domain\usertest'
I think something is wrong with the way conversion is happening for my $name variable from where i set to use it.
Appreciate any help i can get. Thanks
RPSAdmin