Прямо сейчас единственная реальная проблема, которую я вижу, заключается в том, что все ваши переменные установлены с использованием Set-FixedVariable
только с одним блоком try/catch
, что означает, что PowerShell обработает каждый из них построчно, а затем остановится, когда первый терпит неудачу.
Было бы лучше справиться с этим с помощью forEach
l oop, вот так.
Function DeclareFixedVariables
{
$VariableSettings = @(
@{Name='fixModelName';Value=$ModelName;Size=30},
@{Name='fixMasterSetId';Value=$ReturnMessage.MasterSetID;Size=36},
@{Name='fixModelversionId';Value=$ModelversionID;Size=23}
)
forEach($variableSetting in $VariableSettings){
try{
Set-FixedVariable @variableSetting
}
catch{
Write-Log -Message "***Invoking Set-FixedVariable failed for $($VariableSetting.Name) with value $($VariableSetting.Value)***" -Path $LogFile -Level Info
}
}
}
Из стандарта обзора кода это, вероятно, легче читать (особенно если вы немного подправить макет), и таким образом код будет выполняться для каждого элемента, даже если один из них выйдет из строя.
Следующий шаг: вы можете дважды проверить свои предположения относительно того, что Set-FixedVariable
предназначен . Это очень непонятно, зачем иметь массив с количеством пробелов перед значением?