目前,我需要遍历计算机上的所有用户,检查他们的Outlook自动完成文件是否包含某个显示名称并将其删除。 该脚本将通过Windows Powershell ISE进行测试。 并且脚本将是一个批处理文件,通过NK2Edit运行txt文件。 我得到了为特定用户和特定自动完成文件运行的脚本 你可以看到我在这里使用的工具和教程:
以及Outlook自动完成文件的更改:
Outlook Auto Complete file differences
我正在使用2010 Outlook模型,因此每个用户的文件都不同 与最初版本使用配置文件名称和NK2的旧版本不同。 以下是我正在运行的命令
C:\ Users \ name \ Desktop \ NK2EditTest \ NK2Edit.exe / script“C:\ Users \ name \ Desktop \ NK2EditTest \ remove-old-support.txt”“C:\ Users \ name \ AppData \ Local \微软\展望\ RoamCache \ Stream_Autocomplete_X_XXXXXXXX.dat” 而X代表十六进制格式的随机16字节密钥。
我的问题: 如何为多个用户指定Stream_Autocomplete_X_XXXXX ... dat文件 没有为每个用户编写硬编码?
答案 0 :(得分:0)
所以你问的是如何使用可执行文件本身及其配置文件的相对路径来执行程序nk2edit.exe。一种解决方案是将nk2edit.exe作为文件放在GPO用户登录脚本中,并引用相对于执行脚本的配置文件。例如(未测试):
# Get path of currently executing PowerShell script
$scriptPath = Split-Path $MyInvocation.MyCommand.Path -Parent
# Form path to nk2edit.exe (must sit in same directory as PowerShell script)
$nk2edit = Join-Path $scriptPath "nk2edit.exe"
# Form path to nk2edit.exe script (must sit in same directory as PowerShell script)
$scriptFile = Join-Path $scriptPath "remove-old-support.txt"
# Execute nk2edit.exe command for each Stream_AutoComplete_* for current user
Get-ChildItem (Join-Path $Env:LOCALAPPDATA "Microsoft\Outlook\RoamCache\Stream_Autocomplete_*") | ForEach-Object {
& $nk2edit /script $scriptFile $_.FullName
}