Is there a way to change a service account password using PowerShell? I have
a VB Script that will do it, but it's a bit clunky. Thanks!
Is there a way to change a service account password using PowerShell? I have
a VB Script that will do it, but it's a bit clunky. Thanks!
well, show the vb code and we will translate to powershell for you ...in
shorter forms
"Buck Woody - Microsoft SQL Server Team"
<BuckWoodyMicrosoftSQLServerTeam@discussions.microsoft.com> wrote in message
newsFCA6DAF-F582-416F-B5F2-D08BFAF2E8A7@microsoft.com...
> Is there a way to change a service account password using PowerShell? I
> have
> a VB Script that will do it, but it's a bit clunky. Thanks!
I'm not sure translating line by line is the best method - I wasn't sure if
there was a more direct route. At any rate, here's the VB code:
Set oArgs = WScript.Arguments
' Verify the inputs.
If oArgs.Count <> 5 Then
WScript.Echo "Usage: ChangeSQLServiceAccounts.vbs MachineName
InstaNcename ServiceType SQLAccount SQLPassword"
WScript.Echo "ServiceType = 1 (SQLServer), 2 (Agent), 3
(FTE), 4 (DTS), 5 (AS), 6 (RS), 7 (Browser)"
WScript.Echo "Example: ChangeSQLServiceAccounts.vbs .
MSSQLServer 1 BuiltIn\System NULL"
WScript.Quit(1)
Else
' Load the inputs into variables.
strComputer = oArgs(0)
strInstanceName = oArgs(1)
strServiceType = oArgs(2)
strAccountName = oArgs(3)
strPassword = oArgs(4)
End If
' Get a WMI object for the SQL namespace.
Set objWMIService = GetObject("winmgmts:" &
"{impersonationLevel=impersonate}!\\" & strComputer &
"\ROOT\microsoft\sqlserver\ComputerManagement")
' Get an instance for this specific service.
Set objSQLService = objWMIService.Get("SqlService.ServiceName=""" &
strInstanceName & """,SQLServiceType=" & strServiceType)
' Obtain an InParameters object specific to the SQLService.SetServiceAccount
method.
Set objInParam =
objSQLService.Methods_("SetServiceAccount").inParameters.SpawnInstance_()
' Add the input parameters to the input object.
objInParam.Properties_.item("ServiceStartName") = strAccountName
objInParam.Properties_.item("ServiceStartPassword") = strPassword
' Call the SetServiceAccount method, and pass in the input object.
Set objOutParams = objSQLService.ExecMethod_("SetServiceAccount", objInParam)
'Check the return to see whether there were any errors.
If objOutParams.ReturnValue = 0 Then
Wscript.Echo "The service account was changed to " & strAccountName
Else
Wscript.Echo "Could not change the service account to " & strAccountName
& " due to error " & objOutParams.ReturnValue
End If
"IT Staff" wrote:
> well, show the vb code and we will translate to powershell for you ...in
> shorter forms
>
> "Buck Woody - Microsoft SQL Server Team"
> <BuckWoodyMicrosoftSQLServerTeam@discussions.microsoft.com> wrote in message
> newsFCA6DAF-F582-416F-B5F2-D08BFAF2E8A7@microsoft.com...
> > Is there a way to change a service account password using PowerShell? I
> > have
> > a VB Script that will do it, but it's a bit clunky. Thanks!
>
>
>
Buck Woody - Microsoft SQL Server Team wrote:
> Is there a way to change a service account password using PowerShell? I have
> a VB Script that will do it, but it's a bit clunky. Thanks!
Whithin this class:
$class=[WMICLASS]'\\.\root\Microsoft\SqlServer\ComputerManagement:SqlService'
There's a method named setserviceaccount().
I've not used WMI enough, especially with methods, to figure out how to
invoke the method in this case.
Doing $class.psbase gives me a invokemethod() method, but I've not been
able to figure out the syntax or whether I'm on the right track.
Marco
Answered my own question, thought I'd share the script:
# Copyright Buck Woody, 2007
# All scripts provided AS-IS. No functionality is guaranteed in any way.
# Change Service Account name and password using PowerShell and WMI
$class = Get-WmiObject -computername "SQLVM03-QF59YPW" -namespace
root\Microsoft\SqlServer\ComputerManagement -class SqlService
#This remmed out part shows the services - I'll just go after number 6 (SQL
Server Agent in my case):
# foreach ($classname in $class) {write-host $classname.DisplayName}
# $class[6].DisplayName
stop-service -displayName $class[6].DisplayName
# Note: I recommend you make these parameters, so that you don't store
passwords. At your own risk here!
$class[6].SetServiceAccount("account", "password")
start-service -displayName $class[6].DisplayName
"Buck Woody - Microsoft SQL Server Team" wrote:
> Is there a way to change a service account password using PowerShell? I have
> a VB Script that will do it, but it's a bit clunky. Thanks!
| Similar Threads | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Help with Script to Change Logon Account of a Service | TeeCee | VB Script | 1 | 15 Apr 2009 |
| Change Account Credentials (Log On as) on a service? | tore | PowerShell | 0 | 23 Oct 2008 |
| Re: how to change service's user account | Shay Levy [MVP] | PowerShell | 0 | 19 Aug 2008 |
| how to change service's user account | rmq | PowerShell | 0 | 18 Aug 2008 |
| change passwords | Chrisdohck | Vista security | 2 | 11 Sep 2007 |