非域服务器远程终止进程:如何输入凭据解决权限拒绝问题
解决非域服务器远程WMI权限问题的最简单凭据输入方法
针对你遇到的E_ACCESSDENIED权限错误,最直接且安全的解决方式就是在WMI命令中显式指定有权限的凭据——因为你的5台服务器用的是相同凭据,只需要输入一次就能复用,非常高效。
步骤1:获取目标服务器的凭据
用Get-Credential命令弹出交互式输入框,输入有权限操作远程服务器的用户名和密码:
$cred = Get-Credential
执行后会弹出系统原生的凭据输入窗口,输入后凭据会以安全的方式存储在$cred变量中。
步骤2:修改你的WMI命令,添加凭据参数
把-Credential $cred参数加到Get-WmiObject命令里,就能带着正确权限去远程连接服务器了。
检查进程的修改后代码:
$cred = Get-Credential $StartCheck = Get-WmiObject Win32_Process -Computer $Servers -Credential $cred | Where-Object { $ProcessNames -contains $_.Name } $StartCheck | FT * -a $StartCheck | FT * -a | Out-File -FilePath $logfile -Append
终止进程的修改后代码:
$cred = Get-Credential (Get-WmiObject Win32_Process -Computer $Servers -Credential $cred | Where-Object { $ProcessNames -contains $_.Name }).Terminate() | Out-Null
补充:非交互式凭据输入(仅测试环境推荐)
如果是自动化脚本,不想弹出输入框,可以手动构建PSCredential对象,但注意这种方式密码会以明文形式存在脚本中,非常不安全,仅限测试环境使用:
$username = "你的服务器用户名" $password = "你的服务器密码" | ConvertTo-SecureString -AsPlainText -Force $cred = New-Object System.Management.Automation.PSCredential($username, $password)
原理很简单:非域环境下,PowerShell不会自动传递当前登录用户的凭据到远程服务器,必须显式指定拥有远程WMI操作权限的账户,-Credential参数就是用来传递这个权限凭证的。
内容的提问来源于stack exchange,提问作者Cleadus Fetus
相关产品推荐
相关产品推荐

