Start-Service cmdlet:在失败的情况下获取底层错误
Start-Service cmdlet: get underlying error in case of failure
说我要启动MSSSQLSERVER服务。这是通过 Start-Service
cmdlet 在 PowerShell 中完成的。
有时,服务会因为如下示例中的错误而无法启动。
我感兴趣的是失败的根本原因,而 start-service
似乎正在返回 powershell 异常,这是一个不包含 错误特定信息 的通用包装器。
PS C:\Users\Administrator> start-service MSSQLSERVER
start-service : Failed to start service 'SQL Server (MSSQLSERVER) (MSSQLSERVER)'.
At line:1 char:1
+ Start-Service MSSQLSERVER
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service],
ServiceCommandException
+ FullyQualifiedErrorId : StartServiceFailed,Microsoft.PowerShell.Commands.StartServiceCommand
要找到问题的根本原因,我们必须求助于 net start
命令,这让我们回到了应该被 PowerShell 遗忘的过去。
C:\Users\Administrator>NET START MSSQLSERVER
The SQL Server (MSSQLSERVER) service is starting.
The SQL Server (MSSQLSERVER) service could not be started.
A service specific error occurred: 17051.
More help is available by typing NET HELPMSG 3547.
有没有办法查看服务抛出的底层错误?
我想你看看这个会很好link
但基本上,您可以使用 Try/Catch 语句并输出错误消息,如下所示:
try{
Start-Service MSSQLSERVER -ErrorAction Stop
}catch{
$PSItem.Exception.Message
}
如I.T Delinquent所述,错误可以在异常中找到,但在这种情况下,它将存储在内部异常中:
$ErrorActionPreference = "Stop"
try
{
Start-Service -Name "MSSQLSERVER"
}
catch
{
$msg = @()
$err = $_.Exception
do {
$msg += $err.Message
$err = $err.InnerException
} while ($err)
Write-Verbose "Failed to start service: $($msg -join ' - ')"
}
说我要启动MSSSQLSERVER服务。这是通过 Start-Service
cmdlet 在 PowerShell 中完成的。
有时,服务会因为如下示例中的错误而无法启动。
我感兴趣的是失败的根本原因,而 start-service
似乎正在返回 powershell 异常,这是一个不包含 错误特定信息 的通用包装器。
PS C:\Users\Administrator> start-service MSSQLSERVER start-service : Failed to start service 'SQL Server (MSSQLSERVER) (MSSQLSERVER)'. At line:1 char:1 + Start-Service MSSQLSERVER + ~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service], ServiceCommandException + FullyQualifiedErrorId : StartServiceFailed,Microsoft.PowerShell.Commands.StartServiceCommand
要找到问题的根本原因,我们必须求助于 net start
命令,这让我们回到了应该被 PowerShell 遗忘的过去。
C:\Users\Administrator>NET START MSSQLSERVER The SQL Server (MSSQLSERVER) service is starting. The SQL Server (MSSQLSERVER) service could not be started. A service specific error occurred: 17051. More help is available by typing NET HELPMSG 3547.
有没有办法查看服务抛出的底层错误?
我想你看看这个会很好link
但基本上,您可以使用 Try/Catch 语句并输出错误消息,如下所示:
try{
Start-Service MSSQLSERVER -ErrorAction Stop
}catch{
$PSItem.Exception.Message
}
如I.T Delinquent所述,错误可以在异常中找到,但在这种情况下,它将存储在内部异常中:
$ErrorActionPreference = "Stop"
try
{
Start-Service -Name "MSSQLSERVER"
}
catch
{
$msg = @()
$err = $_.Exception
do {
$msg += $err.Message
$err = $err.InnerException
} while ($err)
Write-Verbose "Failed to start service: $($msg -join ' - ')"
}