如何使用-command参数运行powershell?
我尝试添加'-Verb runAs',但我得到一个空值表达式。
powershell -Verb runAs -command "(Get-Date (Get-Process explorer).StartTime).ToString('yyyyMMdd')"
我使用admin right,命令
打开一个PowerShell(Get-Date(Get-Process explorer).StartTime).ToString('yyyyMMdd')
返回正确的值。但是当我在没有管理员权限的情况下启动PowerShell时,我得到一个空值。
所以我认为问题是'powershell -Verb runAs'没有在管理模式下运行命令。
注意:我在尝试此操作时以广告管理系统登录。
答案 0 :(得分:1)
因此,如果您不介意运行脚本而不是仅仅执行命令,那么可以在脚本中完成提升PowerShell的过程。这将检查进程是否已经提升,如果没有,它将使用RunAs动词重新启动进程,以便它以提升的权限运行。
# Elevate UAC if not already running As Administrator
# Get the ID and security principal of the current user account
$myWindowsID=[System.Security.Principal.WindowsIdentity]::GetCurrent()
$myWindowsPrincipal=new-object System.Security.Principal.WindowsPrincipal($myWindowsID)
# Get the security principal for the Administrator role
$adminRole=[System.Security.Principal.WindowsBuiltInRole]::Administrator
# Check to see if we are currently running "as Administrator"
if (!$myWindowsPrincipal.IsInRole($adminRole))
{
# We are not running "as Administrator" - so relaunch as administrator
# Create an encoded string to re-launch the script bypassing execution policy
$Code = ". '$($myInvocation.MyCommand.Definition)'"
$Encoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($code))
# Indicate that the process should be elevated
Start-Process PowerShell.exe -Verb RunAs -ArgumentList "-EncodedCommand",$Encoded
# Exit from the current, unelevated, process
exit
}
# End UACElevation
代码加密命令有点令人费解,但事实并非如此,但我发现如果我没有这样做,我有时会遇到阻止我的执行策略问题。这避免了执行策略阻止PowerShell运行脚本,因为它在技术上不运行脚本,只运行编码命令。该命令正好恰好是PSSession启动后运行脚本。