我想通过SCCM任务序列部署PowerShell脚本。作为其中的一部分,我需要从C:\Program Files x86\TESTapp\test.exe
目录复制和重命名快捷方式。我已经完成了,但我刚刚获悉一些客户端是在32位操作系统上。
让PowerShell确定要采取的路径的最佳方法是什么,即:“Program Files(x86)”或“Program Files”
以下是我目前无法使用的内容:
Switch (Get-WmiObject Win32_OperatingSystem).OSArchitecture {
"32-bit" {$PF = "Program Files"}
"64-bit" {$PF = "Program Files x86"}
}
$TargetFile = "$env:C:\$PF\TESTapp\Test.exe"
$ShortcutFile = "$env:Public\Desktop\NewName-Test.lnk"
$WScriptShell = New-Object -ComObject WScript.Shell
$Shortcut = $WScriptShell.CreateShortcut($ShortcutFile)
$Shortcut.TargetPath = $TargetFile
$Shortcut.Save()
任何建议都将不胜感激。
谢谢!
答案 0 :(得分:2)
试试这个
Switch (Get-WmiObject Win32_OperatingSystem).OSArchitecture {
"32-bit" {$PF = "$env:ProgramFiles"}
"64-bit" {$PF = "$env:ProgramFiles(x86)"}
}
$TargetFile = "$PF\TESTapp\Test.exe"
If (Test-Path $TargetFile) {
$ShortcutFile = "$env:Public\Desktop\NewName-Test.lnk"
$WScriptShell = New-Object -ComObject WScript.Shell
$Shortcut = $WScriptShell.CreateShortcut($ShortcutFile)
$Shortcut.TargetPath = $TargetFile
$Shortcut.Save()
}
答案 1 :(得分:0)
你的错误是 - 你忘记了切换表达式上的():
Switch ((Get-WmiObject Win32_OperatingSystem).OSArchitecture) {
"32-bit" {$PF = "Program Files"}
"64-bit" {$PF = "Program Files x86"}
}
$TargetFile = "C:\$PF\TESTapp\Test.exe"
$ShortcutFile = "$env:Public\Desktop\NewName-Test.lnk"
$WScriptShell = New-Object -ComObject WScript.Shell
$Shortcut = $WScriptShell.CreateShortcut($ShortcutFile)
$Shortcut.TargetPath = $TargetFile
$Shortcut.Save()