如何在windows 7下线后在powershell中调用WPF应用程序
本文关键字:调用 WPF powershell 应用程序 windows 7下 | 更新日期: 2023-09-27 18:04:42
我想在windows 7退出后调用我的wpf应用程序。我写了一个powershell脚本,调用我的wpf应用程序,等待wpf应用程序接近。代码
$p = New-Object System.Diagnostics.Process
$pinfo = New-Object System.Diagnostics.ProcessStartInfo("D:'PowerShell'PsWpf.exe");
$p.StartInfo = $pinfo;
$p.Start();
$p.WaitForExit();
当我尝试使用这个脚本作为注销脚本时,在gpedit中配置。msc下的Windows设置->脚本->注销,然后我的电脑冻结,这意味着没有反应。
如果我像往常一样执行脚本,这意味着右键单击powershell文件,然后"运行然后与powershell",一切运行正常。
windows下线后如何在powershell中调用我的wpf应用程序?
我知道可以在powershell中使用wpf,比如
Add-Type -AssemblyName PresentationFramework
Add-Type -AssemblyName PresentationCore
Add-Type -AssemblyName WindowsBase
[xml]$xaml =
@"
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="PowerShell WPF" Height="244" Width="525" FontFamily="Calibri" FontWeight="Bold" ResizeMode="NoResize">
<Grid Background="#58000000">
<Label Content="Designed and Developed by Free Lancer" Height="28" HorizontalAlignment="Left" Margin="288,165,0,0" Name="label1" VerticalAlignment="Top" />
</Grid>
</Window>
"@
$reader=(New-Object System.Xml.XmlNodeReader $xaml)
$Window=[Windows.Markup.XamlReader]::Load( $reader )
$Window.ShowDialog() | Out-Null
并使用它作为注销脚本,它工作得很好。我的问题是,我不能在powershell脚本只有在。net。
从你的问题目前的形式来看(老实说有点令人困惑),我认为你想:
- 在下线事件时启动进程
- 使用组策略 执行此操作
- 暂停下线,直到脚本动作和流程完成
我不明白你为什么用:
$p = New-Object System.Diagnostics.Process
$pinfo = New-Object System.Diagnostics.ProcessStartInfo("D:'PowerShell'PsWpf.exe");
$p.StartInfo = $pinfo;
$p.Start();
$p.WaitForExit();
我想知道这样是否更好:
Start-Process -FilePath "D:'Powershell'PsWpf.exe" -Wait
使用Start-Process
和-Wait
参数将暂停脚本执行,直到进程"PsWpf.exe"结束。此外,您可能没有意识到GPO与CMD shell而不是Powershell一起执行。因此,要在CMD环境中执行powershell命令,您需要像这样封装它们:
powershell.exe -Command "& {Start-Process -FilePath "D:'Powershell'PsWpf.exe" -Wait}
如果您的计算机在关机/下线时仍然挂起,这是因为程序PsWpf.exe
没有退出。