Sql server 如何将参数添加到此PowerShell脚本以停止命名的SQL Server服务?
使用PowerShell停止某些SQL Server服务时:Sql server 如何将参数添加到此PowerShell脚本以停止命名的SQL Server服务?,sql-server,powershell,service,parameters,sql-agent,Sql Server,Powershell,Service,Parameters,Sql Agent,使用PowerShell停止某些SQL Server服务时: Get-Service -Name 'MSSQLSERVER' | Stop-Service -Force -Verbose Get-Service -Name 'SQLSERVERAGENT' | Stop-Service -Force -Verbose Get-Service -Name 'SQLBrowser' | Stop-Service -Force -Verbose Get-Service -Name 'SQLTE
Get-Service -Name 'MSSQLSERVER' | Stop-Service -Force -Verbose
Get-Service -Name 'SQLSERVERAGENT' | Stop-Service -Force -Verbose
Get-Service -Name 'SQLBrowser' | Stop-Service -Force -Verbose
Get-Service -Name 'SQLTELEMETRY' | Stop-Service -Force -Verbose
Get-Service -Name 'SQLWriter' | Stop-Service -Force -Verbose
我意识到在这个特定的服务器上,它是我拥有的一个命名实例
如何找到实例名称并将其添加到上面的脚本中?这样我就可以停止这个特定实例的相关服务了
基本上这是可行的,但我如何实现自动化呢
Get-Service -Name 'MSSQL$CELCAT' | Stop-Service -Force -Verbose
Get-Service -Name 'SQLAgent$CELCAT' | Stop-Service -Force -Verbose
Get-Service -Name 'SQLBrowser' | Stop-Service -Force -Verbose
Get-Service -Name 'SQLTELEMETRY$CELCAT' | Stop-Service -Force -Verbose
Get-Service -Name 'SQLWriter' | Stop-Service -Force -Verbose
有几个选项。一种是查询实例名称并基于这些名称构建stop命令。这有点棘手,因为默认实例名的处理方式与其他实例名不同。即,服务名称为MSSQLSERVER,但实例名称为默认名称 要获取实例列表,请像这样查询
SQLSERVER:
provider
Import-Module -Name sqlpssqlps
$inames = Get-ChildItem -Path "SQLSERVER:\SQL\$env:computername" | select instancename
foreach($instance in $inames) { get-service -name $instance | stop-service }
另一种方法是简单地使用通配符列出服务,如下所示:
# Match MsSqlServer and MsSql<instance>
Get-Service -Name MSSQL* | % {stop-serivce $_ -force}
# Match SqlServerAgent and SqlAgent<instance>
Get-Service -Name SQL*Agent* | % {stop-serivce $_ -force}
#匹配MsSqlServer和MsSql
获取服务-Name MSSQL*|%{stop serivce$|-force}
#匹配SqlServerAgent和SqlServerAgent
获取服务-Name SQL*Agent*|%{stop serivce$|-force}
有几个选项。一种是查询实例名称并基于这些名称构建stop命令。这有点棘手,因为默认实例名的处理方式与其他实例名不同。即,服务名称为MSSQLSERVER,但实例名称为默认名称
要获取实例列表,请像这样查询SQLSERVER:
provider
Import-Module -Name sqlpssqlps
$inames = Get-ChildItem -Path "SQLSERVER:\SQL\$env:computername" | select instancename
foreach($instance in $inames) { get-service -name $instance | stop-service }
另一种方法是简单地使用通配符列出服务,如下所示:
# Match MsSqlServer and MsSql<instance>
Get-Service -Name MSSQL* | % {stop-serivce $_ -force}
# Match SqlServerAgent and SqlAgent<instance>
Get-Service -Name SQL*Agent* | % {stop-serivce $_ -force}
#匹配MsSqlServer和MsSql
获取服务-Name MSSQL*|%{stop serivce$|-force}
#匹配SqlServerAgent和SqlServerAgent
获取服务-Name SQL*Agent*|%{stop serivce$|-force}