用不同的凭据和运行方式运行脚本块是怎么可能的



我的脚本应该加载凭证和提升的运行代码。我试着将一个脚本块包含到另一个。并使用不同的参数集运行"启动进程"。我有错误"由于错误,此命令无法运行:存根接收到错误数据"。

$ScriptBlock = {
Param(
[datetime] $Start = '04/25/2020 19:52:25',
[datetime] $End = '04/25/2020 19:52:35',
[string] $OutputXMLPath = 'C:DATAProjectsEventLogsAnalyzerDATAScriptBlockOutput.xml',
[string] $logFilePath = 'C:DATAProjectsEventLogsAnalyzerLOGSEventLogsAnalyzer.log'
)                 
$ScriptBlock = {
Param(
[datetime] $Start = '04/25/2020 19:52:25',
[datetime] $End = '04/25/2020 19:52:35',
[string] $OutputXMLPath = 'C:DATAProjectsEventLogsAnalyzerDATAScriptBlockOutput.xml'
) 
$Logs  =  Get-WinEvent -ListLog *
$Res = @()        
Foreach($Log in $Logs) {           
$Log.LogName
$Filter = @{
LogName            = $Log.LogName
StartTime          = $Start
EndTime            = $End
}
$Res += Get-WinEvent -FilterHashTable $Filter -ErrorAction SilentlyContinue
}      
} 
$Res = Start-Process -FilePath "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PassThru -Verb "RunAs"  -ArgumentList " -NoExit -ExecutionPolicy Bypass –NoProfile -Command & { $ScriptBlock }"
$Res
}
$User = Get-VarFromAESFile $Global:GlobalKey1 $Global:APP_SCRIPT_ADMIN_Login
$Pass = Get-VarFromAESFile $Global:GlobalKey1 $Global:APP_SCRIPT_ADMIN_Pass
$Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList (Get-VarToString $User), $Pass
Start-Process -FilePath "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PassThru -Credential $Credentials  -ArgumentList " -NoExit -ExecutionPolicy Bypass –NoProfile -Command & { $ScriptBlock }"```

关于Stackoverflow的类似讨论可以在这里看到:

通过启动进程执行脚本块

在问答中思考的评论;

不使用可以运行脚本的Invoke命令的任何原因使用指定凭据本地或远程阻止(请参阅中的示例2它的帮助(?

另请参阅与上述的关联:

关于PowerShell ScriptBlock 的全部信息

公认的答案:

这里有一些正在工作的东西:

Start-Process $PSHOMEpowershell.exe -ArgumentList "-NoExit","-Command  `"&{`$outvar1 = 4+4; `"write-output `$outvar1`"}`"" -Wait

-ArgumentList是一个字符串数组$outvar被解释,所以我使用`$outvar

最新更新