我希望使用不同的输入多次调用此Set-FixedVariable,但是当我调用DeclareFixedVariables时,我只能设法执行一次,为什么呢?
Function DeclareFixedVariables
{
try
{
Set-FixedVariable -name 'fixModelName'-value $ModelName -size 30
Set-FixedVariable -name 'fixMasterSetId' -value $ReturnMessage.MasterSetID -size 36
Set-FixedVariable -name 'fixModelversionId'-value $ModelversionID -size 36
Set-FixedVariable -name 'fixStartDateStr' -value $StartDateStr -size 23
Set-FixedVariable -name 'fixCreateDate' -value $CreateDateStr -size 23
Set-FixedVariable -name 'fixModelChangeDate' -value $ModelChangeDate -size 23
Set-FixedVariable -name 'fixModelOwner' -value $ModelProperties.UserId -size 6
Set-FixedVariable -name 'fixChangeId' -value $ModelProperties.ChangeId -size 10
Set-FixedVariable -name 'fixChangeUser' -value $ModelProperties.UserId -size 10
Set-FixedVariable -name 'fixAfBolag' -value $afBolag -size 2
Set-FixedVariable -name 'fixThBolag' -value $thBolag -size 2
}catch
{
Write-Log -Message "***Invoking Set-FixedVariable failed***" -Path $LogFile -Level Info
}
}
function Set-FixedVariable
{
param( [parameter(mandatory)][string]$name,
[parameter(mandatory)][string]$value,
[parameter(mandatory)][int]$size
)
$sb = [System.Text.Stringbuilder]::new( ' ' * $size )
[void]$sb.Insert(0, $value)
Set-Variable -Name $name -Value $sb.ToString().Substring(0, $size) -Scope Script -Force
return $value
}
最佳答案
现在,我看到的唯一真正的问题是,所有变量都仅使用Set-FixedVariable
设置,只有一个try/catch
块,这意味着PowerShell将逐行处理每个变量,然后在第一个失败时停止。
最好像这样用forEach
循环来处理。
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
打算做什么的假设。令人困惑的是,为什么在值之前有一个包含多个空格的数组会有所帮助?
关于powershell - 在Powershell中使用不同的输入多次调用同一函数的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62024586/