No PowerShell, a instrução if
pode ser usada como uma expressão:
$i = 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER'
$SQLPaths = @{
'DefaultData'= if (Test-Path "$i\MSSQLServer") {
(Get-ItemProperty "$i\MSSQLServer").DefaultLog
} else {
$null
};
'RepWorking'=(Get-ItemProperty "$i\Replication").WorkingDirectory
}
Além disso, se você estiver usando as Extensões da comunidade do PowerShell (PSCX), ele adicionará uma função Invoke-Ternary
(alias ?:
) o que poderia tornar isso menos detalhado:
$i = 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER'
$SQLPaths = @{
'DefaultData'= ?: {Test-Path "$i\MSSQLServer"} '
{ (Get-ItemProperty "$i\MSSQLServer").DefaultLog } '
{ $null };
'RepWorking'=(Get-ItemProperty "$i\Replication").WorkingDirectory
}