本周我正面临一个场景,那里通过GPO部署快捷方式的常规技术已经不够了。
我正面临一个环境,XP,7,10都是32位(x86)和64位(x64)体系结构以及多种语言。
那么,如何有效地创build超过60个自动分布式应用程序的快捷方式?
使用像%programfiles%这样众所周知的环境variables, programfiles(x86)不再锻炼,因为:
programfiles(x86)variables programfiles是指基于机器体系结构的x86或x64文件夹。 (或者更具体地说:调用variables的进程的体系结构) C:\Programme (x86) ), 假设有2种语言,2种操作系统types(7,10表示“types”相同)和2种体系结构types,下面的选项对于“本地”工具是可能的,但它已经很笨拙:
要创build“最高”版本的快捷方式,您需要部署3个快捷方式“规则”:
Shortcut |Target | Purpose App |%programfiles%\App\app.exe | x86-app on a x86-xp-7-10 or | | x64-app on a x64-xp-7-10 App |%programfiles(x86)%\App\app.exe | x86-app on a x64-7-10 App |C:\Programme (x86)\App\app.xe | x86-app on a x64-xp (german)
假设,你也想让所有的应用程序都可以同时使用x86和x64,否则会变得更糟,因为: %programfiles%会导致错误的结果(可能是x86或者x64) – 所以你每个“快捷方式”都需要WMIfilter来处理这个问题。
像这样的规则:
Shortcut |Target | Purpose App 64 |%programfiles%\app\app.exe | x64-app on a x64-7-10
会不经意地将32 bit version 32-bit-systems上的32 bit version与名称x64链接在一起,而不使用某些WMI筛选器,从而停用规则。
所以这将是4规则,2与WMIfilter:
Shortcut |Target | Purpose App 64 |%programfiles%\App\app.exe | x64-app on a x64-xp-7-10 + wmi-filter App 32 |%programfiles%\App\app.exe | x86-app on a x86-xp-7-10 + wmi_filter App 32 |%programfiles(x86)%\App\app.exe | x86-app on a x64-7-10 App 32 |C:\Programme (x86)\App\app.xe | x86-app on a x64-xp (german)
所以 – 240个快捷规则,如果只有一个“外语” – 但是其中有5个 – > 480个错误的快捷规则。 – >没有!
我希望能够减less所需的工作量。 只要创build(最坏的情况下)每个快捷方式2条目,说明:
作为这个问题的解决scheme,我创build了1个GPO来创build所需的自定义环境variables:
Variable | Purpose %pf_x86% | Program Files x86 on any system %pf_x64% | Program Files x64 on any system (if existing)
所以,这个(单个GPO)总共有6条规则(对于XP的每个附加语言+1):
Variable | Value | OS | WMI Filter (Item-Level-Targeting): %pf_x86% | %programfiles% |7 x86 | select * from Win32_OperatingSystem WHERE Version like "6.%" AND ProductType="1" AND NOT OSArchitecture = "64-bit" %pf_x86% | %programfiles(x86)% |7,10 x64| select * from Win32_OperatingSystem WHERE (Version like "6.%" OR Version like "10.%") AND ProductType="1" AND OSArchitecture = "64-bit" %pf_x86% | %programfiles% |XP x86 | select * from Win32_OperatingSystem WHERE (Version like "5.1%") AND ProductType="1" %pf_x86% | C:\Programme (x86) |XP x64 | select * from Win32_OperatingSystem WHERE (Version like "5.2%") AND ProductType="1" AND OSLanguage=1031 %pf_x64% | %programfiles% |7,10 x64| select * from Win32_OperatingSystem WHERE Version like (Version like "6.%" OR Version like "10.%") AND ProductType="1" AND OSArchitecture = "64-bit" %pf_x64% | %programfiles% |XP x64 | select * from Win32_OperatingSystem WHERE (Version like "5.2%") AND ProductType="1"
(OS语言概述在这里: https : //www.autoitscript.com/autoit3/docs/appendix/OSLangCodes.htm )
这个自定义环境variables现在允许我为每个应用程序准确地configuration两个shurtcut – 不pipe哪个OS-Version运行于任何体系结构或语言
Shortcut |Target | Purpose App 64 |%pf_x64%\App\app.exe | x64-app on any environment. App 32 |%pf_x86%\App\app.exe | x86-app on any environment.
如果两者都存在 – 两个捷径将被部署。
等。