PowerShell-设置SetCustomShell外壳启动器的工作目录

ygya80vv  于 2022-11-10  发布在  Shell
关注(0)|答案(1)|浏览(118)

我正在尝试通过PowerShell设置SetCustomShell来设置Kiosk。
通过以下方式获取类示例

$ShellLauncherClass = [wmiclass]"\\$COMPUTER\${NAMESPACE}:WESL_UserSetting"

并通过以下方式设置自定义外壳

$ShellLauncherClass.SetCustomShell($Kiosk_SID, "C:\Path\To\Executable.exe", ($null), ($null), 0)

有什么方法可以在SetCustomShell函数中设置可执行文件的工作目录吗?有没有办法对可执行文件的首选项进行设置?或者将用户的工作目录设置为程序目录?
使用上面的配置,程序将不会正常运行,但如果使用Start-Process -FilePath C:\Path\To\Executable.exe -WorkingDirectory C:\Path\To,程序将按预期启动。
有什么建议吗?

lsmepo6l

lsmepo6l1#

真的不是我想要的解决方案,但为了实现这一点,我设置了一个PowerShell脚本作为程序的 Package 器。每隔20秒检查一次,查看软件是否已关闭,是否需要重新打开。

for(;;){
    try{
        if (!(Get-Process -Name Executable -ErrorAction SilentlyContinue)){
            Start-Process -FilePath "C:\Path\To\Executable.exe" -WorkingDirectory "C:\Path\To"
            }
        $proc = Get-Process -Name Executable | Sort-Object -Property ProcessName -Unique -ErrorAction SilentlyContinue
        if (!$proc -or ($proc.Responding -eq $false)) {
            $proc.Kill()
            Start-Sleep -s 10
            Start-Process -FilePath "C:\Path\To\Executable.exe" -WorkingDirectory "C:\Path\To"
            }
    }
    catch    {    }
    Start-sleep -s 20
}

然后将该脚本设置为$ShellLauncherClass.SetCustomShell($User_SID, "powershell.exe -WindowStyle hidden -file C:\Path\To\Script.ps1", ($null), ($null), 0),以替换该用户的默认外壳。

相关问题