Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让PowerShell基于操作系统位创建快捷方式_Powershell - Fatal编程技术网

让PowerShell基于操作系统位创建快捷方式

让PowerShell基于操作系统位创建快捷方式,powershell,Powershell,我打算通过SCCM任务序列部署PowerShell脚本。作为其中的一部分,我需要从C:\ProgramFilesx86\TESTapp\test.exe目录复制并重命名一个快捷方式。我已经这样做了,但是我刚刚被告知一些客户端在32位操作系统上 让PowerShell确定路径的最佳方法是什么,即:“程序文件(x86)”或“程序文件” 以下是我目前无法使用的: Switch (Get-WmiObject Win32_OperatingSystem).OSArchitecture { "32-bi

我打算通过SCCM任务序列部署PowerShell脚本。作为其中的一部分,我需要从
C:\ProgramFilesx86\TESTapp\test.exe
目录复制并重命名一个快捷方式。我已经这样做了,但是我刚刚被告知一些客户端在32位操作系统上

让PowerShell确定路径的最佳方法是什么,即:“程序文件(x86)”或“程序文件”

以下是我目前无法使用的:

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()
如有任何建议,将不胜感激


谢谢大家!

您的错误是-您忘记了开关表达式上的()

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()

您的错误是-您忘记了开关表达式上的()

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()
试试这个

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()
}
试试这个

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()
}

环境变量
ProgramFile
ProgramFiles(x86)
中有空格,并且没有以
C:
Doh开头的环境变量!这是一个多么愚蠢的错误,我想我在这方面工作的时间太长了。谢谢你的帮助,它现在工作得很好。没关系,我一开始也没发现;)环境变量
ProgramFile
ProgramFiles(x86)
中有空格,并且没有以
C:
Doh开头的环境变量!这是一个多么愚蠢的错误,我想我在这方面工作的时间太长了。谢谢你的帮助,它现在工作得很好。没关系,我一开始也没发现;)