我有一个始终位于用户桌面上的文件,但是,根据机器的设置方式,桌面可能位于 C 驱动器或 D 驱动器上。
以下是我尝试使用的内容。 (Get-Location).Drive.Name
本身将返回我机器上的 C 驱动器。但是,如果我将它组合成完整的代码行来启动程序,它就不起作用。
我做错了什么?
$userName = [Environment]::UserName
Start-Process ((Get-Location).Drive.Name)\Users\$($userName)\Desktop\VIPHorizon\Service_Desk.url
最佳答案
虽然另一个答案是正确的,您缺少一个冒号,但仅仅添加它是不够的。
如果你尝试用冒号运行它,你会得到另一个错误,如下所示:
表达式或语句中出现意外标记“:\Users”。
为了解决这个问题,您需要将整个内容用引号引起来。
"((get-location).Drive.Name):\Users\$($userName)\Desktop\VIPHorizon\Service_Desk.url"
然后你会发现((get-location).Drive.Name)
是直接写入字符串中的,而不是被替换掉。这可以通过在调用前加上美元符号来解决,就像您已经为 userName 所做的那样。
"$((get-location).Drive.Name):\Users\$($userName)\Desktop\VIPHorizon\Service_Desk.url"
关于powershell - 使用驱动器号通配符启动进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51500314/