Windows

以普通使用者 powershell 啟動程序

  • December 18, 2021

我正在創建一個 powershell 腳本,它可以自動設置新的電腦部署。我的情況是,我想從提升的管理員 powershell 控制台實例以普通非管理員使用者的身份啟動執行檔。原因是如果我從提升的提示/腳本啟動,執行檔會生成錯誤。這是命令的結構:

Start-Process -FilePath (${Env:CommonProgramFiles(x86)} + "\sample.exe") -ArgumentList "/PRODUCT:sample", "/VERSION:2.0", "/MODE:1"

我做了一些搜尋,發現與我需要的相反(非管理員到管理員)在這裡https://technet.microsoft.com/en-us/library/hh849848.aspx但我只看到RunAs提升為管理員。

設置:

  • Windows 10 教育版
  • PS 5

解析度

由於psexec沒有提供抑制登錄的解決方案,我最終開始瞭如下過程:

$username = Read-Host "Please enter in a valid username "
$password = Read-Host "Please enter in a the account password " -AsSecureString
Start-Process -Credential (New-Object System.Management.Automation.PSCredential($username, $password)) -FilePath (${Env:CommonProgramFiles(x86)} + "\sample.exe") -ArgumentList "/PRODUCT:sample", "/VERSION:2.0", "/MODE:1"

它不能完美地解決問題,但使用者至少可以留在腳本中。

這取決於問題是什麼。如果您根本沒有在使用者上下文下執行,例如在 SYSTEM 帳戶下,那麼您可能需要以特定使用者身份執行,這通常意味著指定使用者名和密碼,這通常是有問題的。

如果問題是您目前具有管理員權限,但需要在沒有這些管理員權限的情況下執行某些東西,那麼這應該可以使用PSExec或類似方法而不需要使用者名和密碼。

psexec -accepteula -l <CMD>

-l 以受限使用者身份執行程序(剝離管理員組並僅允許分配給使用者組的權限)。在 Windows Vista 上,該程序以低完整性執行。

應該可以在 PowerShell 中呼叫 PSExec 並讓 PSExec 呼叫原始應用程序。也可以直接通過 PowerShell 執行此操作。


也可以使用 PSExec 執行此操作,而無需通過在目標使用者的會話中執行某些操作來輸入使用者名/密碼,只要他們已經登錄即可。

psexec -accepteula -i <session> <CMD>

引用自:https://serverfault.com/questions/782824