(Get-WmiObject win32_service | where { $_.displayname -eq "SQL Server"} ).startname
Substitua o nome pelo nome de exibição do seu serviço do servidor SQL
Gostaria de ativar o link do IFI em uma caixa nova ou existente do Windows Server com o SQL Server, via SQL ou Powershell. Não pretendo passar pela "Atribuição de direitos de utilizador > Segurança local > Políticas locais > Executar tarefas de manutenção de volume > Adicionar rota de utilizador" - necessita de implantar novas máquinas através de um script, sem interação manual. Suponha que a conta de serviço do SQL Server não seja alterada.
Para novas instalações, quando escolho a conta, posso executar o script Powershell abaixo e isso resolve o problema:
$sqlaccount = "domain\account"
# https://technet.microsoft.com/en-gb/library/bb490997.aspx
secedit /export /cfg C:\secexport.txt /areas USER_RIGHTS
$line = Get-Content C:\secexport.txt | Select-String 'SeManageVolumePrivilege'
(Get-Content C:\secexport.txt).Replace($line,"$line,$sqlaccount") | Out-File C:\secimport.txt
secedit /configure /db secedit.sdb /cfg C:\secimport.txt /overwrite /areas USER_RIGHTS
No entanto, para instalações SQL existentes, não é possível descobrir uma maneira de consultar a conta de serviço configurada do SQL Server e fornecê-la a esse script. Procurando uma solução com o WS 2012 R2 em mente, mas algo que também funcionaria no WS 2003 R2 seria melhor (suporta até o Powershell 2 se não estou enganado?).
Funciona bem, mas no windows server 2016 trava no secedit configure. Para evitar isso, basta adicionar:
Write-Host "y" | secedit / configure / db secedit.sdb / cfg C: \ secimport.txt / sobrescrever / áreas USER_RIGHTS
Tags windows security powershell