PowerShell DSC由哪个进程运行?

查询msft_providers

Get-WmiObject msft_providers | select provider

这里显示的provider是DSCTimer,还有一个provider是DSCCore

查看进程

$dscProcessID = Get-WmiObject msft_providers | Where-Object {$_.provider -like 'dsc*'} | Select-Object -ExpandProperty HostProcessIdentifier 
Get-Process -Id $dscProcessID

查询进程的时候,添加 -includeusername 可以显示该进程运行的账户

DSCTimer是network service账户运行
DSCCore是system账户运行

运行账户

知道运行的账户对我们理解程序什么有帮助,比如我们执行一个数据库备份的操作,通过调用invoke-sqlcmd命令去执行,该命令可以显示的传递username和pwd,也可以不传递。
那么不传递的时候,用的是哪个账户呢?
答案是,使用运行PowerShell Session的那个账户,也就是System账户。

Specifies the login ID for making a SQL Server Authentication connection to an instance of the Database Engine.
The password must be specified through the Password parameter.
If Username and Password are not specified, this cmdlet attempts a Windows Authentication connection using the Windows account running the Windows PowerShell session. When possible, use Windows Authentication.

https://learn.microsoft.com/en-us/powershell/module/sqlserver/invoke-sqlcmd?view=sqlserver-ps#-username

如果我们在SQLServer中禁掉system账户,那么备份时候就会出错。

参考

https://ingogegenwarth.wordpress.com/2015/11/11/powershell-desired-state-configurationdschow-to-enforce-a-consistency-check/

posted @ 2022-10-31 20:53  talentzemin  阅读(32)  评论(0编辑  收藏  举报