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