Windows 针对Intune Win32从bat执行PS

Windows 针对Intune Win32从bat执行PS,windows,powershell,batch-file,intune,Windows,Powershell,Batch File,Intune,我很困惑,其实也不太熟悉的PS和蝙蝠后,我的麻烦与他们 我想通过Intune文件(WIN32应用程序)在Windows 10中使用Intune设置锁屏 我有一个文件夹,里面有我想要设置的图像,一个copy.bat,它应该复制目录中的图像,还可以执行PS文件来设置登录图像,一个del.bat来删除图像 复制.bat md %AllUsersProfile%\sz copy /Y Wallpaper.jpg %AllUsersProfile%\sz powershell -ExecutionPoli

我很困惑,其实也不太熟悉的PS和蝙蝠后,我的麻烦与他们

我想通过Intune文件(WIN32应用程序)在Windows 10中使用Intune设置锁屏

我有一个文件夹,里面有我想要设置的图像,一个copy.bat,它应该复制目录中的图像,还可以执行PS文件来设置登录图像,一个del.bat来删除图像

复制.bat

md %AllUsersProfile%\sz
copy /Y Wallpaper.jpg %AllUsersProfile%\sz
powershell -ExecutionPolicy Bypass -File Set-Lockscreen.ps1 -verb RunAs
del /Y %AllUsersProfile%\sz\Wallpaper.jpg
del.bat

md %AllUsersProfile%\sz
copy /Y Wallpaper.jpg %AllUsersProfile%\sz
powershell -ExecutionPolicy Bypass -File Set-Lockscreen.ps1 -verb RunAs
del /Y %AllUsersProfile%\sz\Wallpaper.jpg
设置锁屏。ps1

$RegKeyPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationLS"
$LockScreenPath = "LockScreenImagePath"
$LockScreenStatus = "LockScreenImageStatus"
$LockScreenUrl = "LockScreenImageUrl"
$StatusValue = "1" 

$path = "C:\ProgramData\Elinvar"
$LockScreenImageValue = "C:\ProgramData\sz\Wallpaper.jpg"

 sIf ((Test-Path -Path $path) -eq $false)
{
 New-Item -Path $path -ItemType directory
}
 
if (!(Test-Path $RegKeyPath))
{
 Write-Host "Creating registry path $($RegKeyPath)."
 New-Item -Path $RegKeyPath -Force | Out-Null
}
 
New-ItemProperty -Path $RegKeyPath -Name $LockScreenStatus -Value $StatusValue -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path $RegKeyPath -Name $LockScreenPath -Value $LockScreenImageValue -PropertyType STRING -Force | Out-Null
New-ItemProperty -Path $RegKeyPath -Name $LockScreenUrl -Value $LockScreenImageValue -PropertyType STRING -Force | Out-Null
 
RUNDLL32.EXE USER32.DLL, UpdatePerUserSystemParameters 1, True
我将所有这些文件打包,并将其作为Win32文件上载到Intune中。 上传作品,分配到一组作品,安装成功。到目前为止一切都很好,我想

如果我检查目录,则图像位于%AllUsersProfile%\sz中。 但是,当我检查注册表时,没有设置条目

当我手动运行copy.bat文件时,它不工作。只有当我以管理员身份运行它时。 当我以管理员身份运行cmd中的最后一行时

powershell -ExecutionPolicy Bypass -File Set-Lockscreen.ps1 -verb RunAs
它也起作用

我认为Intune没有以管理员身份运行脚本。 在Intune中,没有配置说明,请以管理员身份运行此命令。 也许有语法?有人知道吗? 差不多

copy.bat RunAs
我还导出了reg文件,并使用

reg import PersonalizationLS.reg
它不起作用

我认为必须有一种方法在intune中执行安装命令,以管理员身份运行脚本。 它只需要最后一行的管理员权限、md和无管理员权限的复制工作。(对于重要的注册表文件也是如此)。

Windows PowerShell没有
-Verb
参数,只有
cmdlet没有

由于只有
powershell.exe
调用需要提升(运行ad admin),请在批处理文件中尝试以下操作:

powershell -ExecutionPolicy Bypass -c Start-Process -Verb RunAs -Wait powershell.exe '-c Set-Location "\"\\\"%CD%\\\"\""; .\Set-Lockscreen.ps1'
但是,这只适用于交互式执行,因为用户必须手动确认UAC安全对话框以进行权限提升(以管理员身份运行)-如果他们自己不是管理员,则必须提供管理员凭据。


如果问题与从32位进程运行而需要PowerShell脚本在64位进程中运行有关(假定32位和64位进程有单独的注册表配置单元),请替换
C:\Windows\SysNative\WindowsPowerShell\v1.0\powershell.exe
用于(仅第一个)
powershell

Windows powershell没有
-Verb
参数,只有
cmdlet没有

由于只有
powershell.exe
调用需要提升(运行ad admin),请在批处理文件中尝试以下操作:

powershell -ExecutionPolicy Bypass -c Start-Process -Verb RunAs -Wait powershell.exe '-c Set-Location "\"\\\"%CD%\\\"\""; .\Set-Lockscreen.ps1'
但是,这只适用于交互式执行,因为用户必须手动确认UAC安全对话框以进行权限提升(以管理员身份运行)-如果他们自己不是管理员,则必须提供管理员凭据。


如果问题与从32位进程运行而需要PowerShell脚本在64位进程中运行有关(假定32位和64位进程有单独的注册表配置单元),请替换

C:\Windows\SysNative\WindowsPowerShell\v1.0\powershell.exe
用于(仅限第一个)
powershell

作为旁白:就像在批处理文件中使用
%AllUsersProfile%
来引用所有用户数据目录一样,您应该在PowerShell脚本中使用
$env:AllUsersProfile
。为什么要使用批处理文件?非常容易管理。它与批处理文件无关,更多的是如何执行文件。在intune中,只有一个字段用于安装命令。我只需要输入copy.bat。当然,我也可以使用PowerShell,但当无法在intune中使用管理员权限从该部分运行PowerShell时,它将毫无帮助。现在,我使用IntuneWinAppUtil传输了该文件,并通过脚本部分执行PS以设置注册表。这不是最好的方法,但它很有效。我在我的帖子中这样做了。使用IntuneWinAppUtil传输文件,并通过intune脚本设置执行脚本以设置注册表。请允许我向新来者提供标准建议:如果您有答案,您将通过向未来读者展示解决问题的方法来帮助他们。要接受答案,请单击大标题✓ 答案左侧大数字下方的符号(您将获得2点声誉积分)。如果你至少有15个声望点,你也可以投票给其他有用的答案(也可以选择被接受的答案)。如果您的问题还没有解决,请提供反馈,或者,如果您自己找到了解决方案。作为旁白:就像您在批处理文件中使用
%AllUsersProfile%
引用所有用户数据目录一样,您应该在PowerShell脚本中使用
$env:AllUsersProfile
。为什么要使用批处理文件?非常容易管理。它与批处理文件无关,更多的是如何执行文件。在intune中,只有一个字段用于安装命令。我只需要输入copy.bat。当然,我也可以使用PowerShell,但当无法在intune中使用管理员权限从该部分运行PowerShell时,它将毫无帮助。现在,我使用IntuneWinAppUtil传输了该文件,并通过脚本部分执行PS以设置注册表。这不是最好的方法,但它很有效。我在我的帖子中这样做了。使用IntuneWinAppUtil传输文件,并通过intune脚本设置执行脚本以设置注册表。请允许我向新来者提供标准建议:如果您有答案,您将通过向未来读者展示解决问题的方法来帮助他们。要接受答案,请单击大标题✓ 答案左侧大数字下方的符号(您将获得2点声誉积分)。如果你至少有15个声望点,你也可以投票给其他有用的答案(也可以选择被接受的答案)。如果你的