我应该如何处理 dism powershell 错误?
How should i handle dism powershell errors?
您好,我尝试使用 cath.. 处理来自 dism 的错误,但效果不佳。所以我的问题是,我该如何改进它。
function dotnet35 () {
WriteLogNewScirpt "dotnet35"
WriteLogInstruction "installing .Net 3.5 online"
$Errorccured=$false
$Error.Clear()
try {
$ErrorActionPreference = 'stop'
Start-Process -FilePath powershell.exe -ArgumentList {DISM /Online /Enable-Feature /FeatureName:NetFx3 /All} -verb RunAs -WindowStyle Hidden | Out-Default
} catch {
WriteLogError ".Net 3.5 could not be installed"
WriteLogError "$Error"
$Errorccured=$true
}
if(!$Errorccured) {
WriteLogPosisitive ".Net 3.5 installed"
} else {
dotnet35offline
}
}
function dotnet35offline () {
WriteLogInstruction "installing .Net 3.5 offline"
$Erroroccured=$false
$Error.Clear()
try {
$ErrorActionPreference = 'stop'
Start-Process -FilePath powershell.exe -ArgumentList {DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:c:\scripts\sources\features\sxs} -verb RunAs | Out-Default
} catch {
WriteLogError ".Net 3.5 could not be installed"
WriteLogError "$Error"
$Erroroccured=$true
}
if(!$Erroroccured) {
WriteLogPosisitive ".Net 3.5 konnte offline installiert werden"
}
}
对不起我的翻译,我翻译的很快^^
提前致谢
Terminating errors 仅影响 PowerShell 函数和 .NET 库中抛出的异常。如果要检查 外部命令(例如可执行文件)的结果,则需要检查 $LASTEXITCODE
变量, 其作用与批处理脚本中的 %ERRORLEVEL%
变量相同。例如:
Start-Process -FilePath dism.exe -ArgumentList '/Online', '/Enable-Feature', '/FeatureName:NetFx3', '/All' -Verb RunAs -WindowStyle Hidden
if( $LASTEXITCODE -ne 0 ){
# Handle the error here
# For example, throw your own error
throw "dism.exe failed with exit code ${LASTEXITCODE}"
}
另外,不要在代码中调用 Out-Default
。
您好,我尝试使用 cath.. 处理来自 dism 的错误,但效果不佳。所以我的问题是,我该如何改进它。
function dotnet35 () {
WriteLogNewScirpt "dotnet35"
WriteLogInstruction "installing .Net 3.5 online"
$Errorccured=$false
$Error.Clear()
try {
$ErrorActionPreference = 'stop'
Start-Process -FilePath powershell.exe -ArgumentList {DISM /Online /Enable-Feature /FeatureName:NetFx3 /All} -verb RunAs -WindowStyle Hidden | Out-Default
} catch {
WriteLogError ".Net 3.5 could not be installed"
WriteLogError "$Error"
$Errorccured=$true
}
if(!$Errorccured) {
WriteLogPosisitive ".Net 3.5 installed"
} else {
dotnet35offline
}
}
function dotnet35offline () {
WriteLogInstruction "installing .Net 3.5 offline"
$Erroroccured=$false
$Error.Clear()
try {
$ErrorActionPreference = 'stop'
Start-Process -FilePath powershell.exe -ArgumentList {DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:c:\scripts\sources\features\sxs} -verb RunAs | Out-Default
} catch {
WriteLogError ".Net 3.5 could not be installed"
WriteLogError "$Error"
$Erroroccured=$true
}
if(!$Erroroccured) {
WriteLogPosisitive ".Net 3.5 konnte offline installiert werden"
}
}
对不起我的翻译,我翻译的很快^^
提前致谢
Terminating errors 仅影响 PowerShell 函数和 .NET 库中抛出的异常。如果要检查 外部命令(例如可执行文件)的结果,则需要检查 $LASTEXITCODE
变量, 其作用与批处理脚本中的 %ERRORLEVEL%
变量相同。例如:
Start-Process -FilePath dism.exe -ArgumentList '/Online', '/Enable-Feature', '/FeatureName:NetFx3', '/All' -Verb RunAs -WindowStyle Hidden
if( $LASTEXITCODE -ne 0 ){
# Handle the error here
# For example, throw your own error
throw "dism.exe failed with exit code ${LASTEXITCODE}"
}
另外,不要在代码中调用 Out-Default
。