[英]PowerShell - advice to get script slimmer
我有以下 PS 脚本,它在两个块中重复相同数量的注册表项。 所以我有两个问题:
我怎样才能避免重复那长长的 reg 键列表? 我已经尝试将它们添加到分配了 @" "@ 的变量中,但是当我使用该变量而不是 reg 键时,它不起作用
$faultReport 在进入 Catch 块时没有添加,如何解决?
$faultReport = @() if (Test-Connection $2FQDN -Quiet -count 2) { Try { Invoke-Command -ComputerName $1FQDN -ScriptBlock { Loads of registry keys } } Catch { $faultReport += $1FQDN} } elseif (Test-Connection $2FQDN -Quiet -count 2) { Try { Invoke-Command -ComputerName $2FQDN -ScriptBlock { Loads of registry keys } } Catch { $faultReport += $2FQDN } }
可以将脚本块分配给变量
$scriptBlock = { ... }
您的代码中也有错误:您在第一个if
检查$2FQDN
(而不是$1FQDN
)的连接。
此外,您可以进一步简化代码:if-else 的两个主体是相同的。
我的建议:
$scriptBlock = {
# Loads of registry keys...
}
$faultReport = @()
$computerName = $null
if (Test-Connection $1FQDN -Quiet -count 2) {
$computerName = $1FQDN
}
elseif (Test-Connection $2FQDN -Quiet -count 2) {
$computerName = $2FQDN
}
if ($computerName) {
try {
Invoke-Command -ComputerName $computerName -ScriptBlock $scriptBlock
}
Catch {
$faultReport += $computerName
}
}
注意:始终使用正确的缩进。 我怎么强调都不够。 它使您自己的代码的阅读和故障排除变得更加容易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.