我通常以非特权用户身份登录,并将进程提升为具有管理员权限的其他用户。该用户密码每天更改。我试图将其作为安全字符串存储在PowerShell中,然后将其读入凭证对象并启动进程。它给我的错误是传递给系统调用的数据区域太小。
每天设置我运行的密码:
read-host -assecurestring | convertfrom-securestring | out-file c:\creds\mycached.txt
然后,在我的.ps1脚本中,我想使用该凭据进行提升。这就是我正在做的事情:
$proc_fullpath = "C:\process_tools\Procmon.exe"
$username = "mydomain\my_admin_userid"
$password = cat c:\creds\mycached.txt
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList @($username,(ConvertTo-SecureString -String $password -AsPlainText -Force))
$args = "Start-Process " + $proc_fullpath + " -Verb runAs"
# Write-Host $args
Start-Process powershell.exe -Credential $cred -NoNewWindow -ArgumentList $args
我收到以下错误:
Start-Process : This command cannot be run due to the error: The data area passed to a system call is too small.
如何让这项工作执行单个.exe文件(本例中为procmon.exe)以及何时运行带参数的.exe文件?
我知道这是基本的,但我无法让它发挥作用。