Security 脚本是否可以使用管理员凭据运行,然后获取活动用户用户名?

Security 脚本是否可以使用管理员凭据运行,然后获取活动用户用户名?,security,powershell,scripting,Security,Powershell,Scripting,服务器上有一个脚本,必须在每台用户的计算机上运行,问题是实际上我已经对用户名/密码进行了加密,我需要一种从管理员用户那里获取凭据(无需提示)的方法来访问sql server,以便用户名和密码不会被“硬编码”然后以字符串形式获取活动用户的用户名($env:username)。我可以在批处理文件上使用Run As命令来完成第一部分,但凭借我的一点经验,我无法找到一个安全的解决方案来自动化整个任务。 我正在使用Invoke-SqlCmdcmdlet获取如下表中的信息: Invoke-Sqlcmd -Q

服务器上有一个脚本,必须在每台用户的计算机上运行,问题是实际上我已经对用户名/密码进行了加密,我需要一种从管理员用户那里获取凭据(无需提示)的方法来访问sql server,以便用户名和密码不会被“硬编码”然后以字符串形式获取活动用户的用户名(
$env:username
)。我可以在批处理文件上使用
Run As
命令来完成第一部分,但凭借我的一点经验,我无法找到一个安全的解决方案来自动化整个任务。 我正在使用
Invoke-SqlCmd
cmdlet获取如下表中的信息:

Invoke-Sqlcmd -Query $query -ServerInstance $server -Username $credentials.getnetworkcredential().Username -Password $credentials.getnetworkcredential().Password -database $DB

其中的凭据是管理员用户的凭据。我确实加密了密码,但它可以被解密。因此,我需要一种不用将凭据存储在.txt或代码中就可以使用凭据的方法。

我不完全了解您在这里尝试执行的操作,但我想谈谈有关powershell中凭据的一点

$cred=获取凭证
$cred |导出Clixml-路径C:\Path\to\store\creds.xml
这样做将在xml文件中存储加密的凭据

$cred=Import Clixml-Path C:\Path\to\store\creds.xml
这将以可用的形式从文件中读回它

您对此的问题似乎是它可以被解密,这对我来说意味着您认为任何人都可以成功地读取和解密凭据,但事实并非如此

使用基于用户和加密凭据的计算机的密钥对凭据进行加密。没有其他用户能够读取它,其他计算机上的任何用户也无法读取它。如果脚本总是由同一个用户在同一台计算机上运行,这实际上是很好的。当你有多台电脑时,它就会崩溃

您可以使用使用
ConvertTo SecureString-key$key
提供的密钥创建加密字符串,但由于您需要将密钥存储在某个位置,因此您又回到了原点

如果您想尝试这种方法,请查看

您也可以尝试使用
cmdkey
,它是凭据管理器,但是您仍然需要在每台机器上预先填充它,如果要这样做,您还可以为运行它的每台机器生成一个存储的凭据文件


如果您能更清楚地分解您的工作流程,就可以更容易地确定如何安全地存储凭据。

我不完全理解您的情况,但是Get-WmiObject Win32|U ComputerSystem | select username通常会获取当前登录的用户。如果我理解正确,您正在寻找一种在脚本中使用管理员凭据而无需硬编码的方法?您可以以加密形式存储凭证,然后在脚本中使用它。举个例子:这就是我想要做的,但是那些加密的凭证可以用PowerShell命令解密。因此,我需要的东西不是存储在一个.txt或硬编码的脚本。好吧,如果它不能被解密,它不能被使用,但它不像你可以读出密码。在再次查看链接后,它不是最好的张贴。但是,您应该能够使用相同的方法加密一对完整的cred