Condições dinâmicas usando Invoke-Expression. PowerShell Rocks !!!!


Estou trabalhando  para escalar de forma assíncrona um antigo script que  checa  a fragmentação dos indices e gera um report e me deparei com uma situação inusitada.

Tenho uma maquina com SQL Server 2000 e antes do SQL Server 2005 o nome da propriedade LogicalFrgamentation. Depois  é AverageFragmentation. Também achei estranho que a SMO no pipeline não tinha a propriedade properties para fazer a checagem.

Bom..eu me recuso até a morte  criar dois blocos de teste então a maneira foi criar a condição conforme a versão do SQL Server que está no processo corrente. E depois colocar o invoke-expression para executar ela.

If ($SQLServerVersion -gt 8) {
$ConditionIf = '($_.AverageFragmentation -ge 1 -and $_.AverageFragmentation -le 30 -and $_.Pages -ge 1000)'
$ConditionElseIf ='($_.AverageFragmentation -gt 30 -and $_.Pages -ge 1000)'
} else {
$ConditionIf = '($_.LogicalFragmentation -ge 1 -and $_.LogicalFragmentation -le 30 -and $_.Pages -ge 1000)'
$ConditionElseIf = '($_.LogicalFragmentation -gt 30 -and $_.Pages -ge 1000)'
}
if (invoke-expression -Command $ConditionIf) {
###do what you need to do
} elseif ( invoke-expression -Command $ConditionElseIf) {
###do what you need to do
}

Show né !!!

About Laerte Junior

Laerte Junior Laerte Junior is a SQL Server specialist and an active member of WW SQL Server and the Windows PowerShell community. He also is a huge Star Wars fan (yes, he has the Darth Vader´s Helmet with the voice changer). He has a passion for DC comics and living the simple life. "May The Force be with all of us"
This entry was posted in Algo que Esqueci de Categorizar. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s