这是非常简单的事情,但我就是无法让任何东西发挥作用。我想在特定用户下的 powershell 脚本中运行块代码。关键字是locally我正在使用 powershell 2.0。
Invoke-Command 似乎需要远程主机?我运行以下命令,我看到的错误消息似乎也表明了这一点:
$strScriptUser = "DOMAIN\USER"
$strPass = "PASSWERD"
$PSS = ConvertTo-SecureString $strPass -AsPlainText -Force
$cred = new-object system.management.automation.PSCredential $strScriptUser,$PSS
Invoke-Command -ComputerName "." -scriptblock {
write-output "HI!"
} -Credential $cred
powershell 2.0 不支持使用 -ScriptBlock 启动作业?我运行以下命令,我看到的错误消息似乎也表明了这一点:
$strScriptUser = "DOMAIN\USER"
$strPass = "PASSWERD"
$PSS = ConvertTo-SecureString $strPass -AsPlainText -Force
$cred = new-object system.management.automation.PSCredential $strScriptUser,$PSS
Start-Job -ScriptBlock {
write-output "HI!"
} -Credential $cred
我做错了什么,还是有其他方法?
补充:这是我首先要做的事情。我正在制作一个计划任务,该任务在用户登录/解锁将登录信息写入文件的终端时运行。计划任务以本地用户身份运行,以便获取用户名、个人资料等信息。然后使用不同的用户帐户将登录信息写入日志文件,这是唯一可以修改该文件的帐户。为了阻止访问脚本中的登录凭据,我使用 PS2EXE 将脚本转换为 EXE。
这是另一种方法。
# Get the other user's credentials
$credential = Get-Credential
# Execute a scriptblock as another user
$commands = @'
$env:username
# ... more commands ...
'@
Start-Process -FilePath Powershell -LoadUserProfile -Credential $credential -ArgumentList '-Command', $commands
# Execute a file as another user
$script = '.\path\name.ps1'
Start-Process -FilePath Powershell -LoadUserProfile -Credential $credential -ArgumentList '-File', $script
使用 -LoadUserProfile 开关,这具有创建用户配置文件(如果用户配置文件尚不存在)的额外好处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)