bibi92
asked on
Unable to index into an object of type System.ServiceProcess.ServiceController
Hello,
if I have executed the script on a server which run two instances SQL SERVER, no error message is returned
Unable to index into an object of type System.ServiceProcess.Serv iceControl ler.
+ if ($INST -ne $LIST_INST[ <<<< -1]) {
+ CategoryInfo : InvalidOperation: (-1:Int32) [], ParentContainsErro
+ FullyQualifiedErrorId : CannotIndex
Thanks
if I have executed the script on a server which run two instances SQL SERVER, no error message is returned
$LIST_INST = (Get-Service -Name "MSSQL*" -Exclude "*Launcher*","*AD*")
foreach ($INST in $LIST_INST) {
if ($CLUSSVC -eq $null -or $SCMODE -eq 'AUTO') {
$INST_NAME = $INST.Name.REPLACE("MSSQL$","")
}
else {
$INST_NAME = $INST.Name.REPLACE("SQL Server (","")
$INST_NAME = $INST_NAME.REPLACE(")","")
$CSERVICES = Get-WmiObject -Class win32_service -ComputerName $HOSTNAME | where { $_.Name -match "$INST_NAME" -and $_.Name -match 'MSSQLF' -or $_.Name -eq 'SQLBrowser' -or $_.Name -eq 'SQLWriter' }
}
$REGPATH = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL").$INST_NAME
$key_name = "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\" + $REGPATH + "\Cluster"
$key_prop = Get-ItemProperty -Path $key_name -ErrorAction silentlycontinue
$FULLPATH = "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$REGPATH"
$SQLROOT = (Get-ItemProperty "$fullpath\Setup").SQLDataRoot
if ($key_prop -eq $null) {
$ser_name = (Get-WmiObject Win32_Computersystem).Name
}
else {
$ser_name = $key_prop.ClusterName
}
$server = $SER_NAME + '\' + $INST_NAME
if ($inst_name -eq "MSSQLSERVER") {
$server = $ser_name
}
if ($INST -ne $LIST_INST[-1]) {
$line_FG = " { `"{#DBHOST}`":`"" + $HOSTNAME + "`" , `"{#INSTANCE}`":`"" + $INST_NAME + "`" , `"{#DBSPACE}`":`"" + $DBSPACE + "`"},"
}
else {
$line_FG = " { `"{#DBHOST}`":`"" + "(" + $HOSTNAME + ")" + $SER_NAME + "`" ,`"{#INSTANCE}`":`"" + $INST_NAME + "`" , `"{#DBSPACE}`":`"" + $DBSPACE + "`"},"
}
if ($INST -eq $LIST_INST[-1]) {
$line_FG = " { `"{#DBHOST}`":`"" + $HOSTNAME + "`" , `"{#INSTANCE}`":`"" + $INST_NAME + "`" , `"{#DBSPACE}`":`"" + $DBSPACE + "`"}"
if ($i -lt $nb_FG_DB-1 -or $j -lt $nb_FG-1) { $line_FG += ',' }
}
Write-Host $line_FG
}
But if I have executed the script on a server which run only one instance SQL SERVER, the following erreor message is returnedUnable to index into an object of type System.ServiceProcess.Serv
+ if ($INST -ne $LIST_INST[ <<<< -1]) {
+ CategoryInfo : InvalidOperation: (-1:Int32) [], ParentContainsErro
+ FullyQualifiedErrorId : CannotIndex
Thanks
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER