【发布时间】:2021-03-26 01:58:57
【问题描述】:
我确实有一个 ps1 文件,它会创建一个链接
create-link.ps1
$path = $env:HOMESHARE + "\My Projects\"
If(!(test-path $path))
{
New-Item -ItemType Directory -Force -Path $path
}
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($env:HOMESHARE + "\My Projects\" + "linkname.lnk")
$Shortcut.TargetPath = "\\path\for\link"
$Shortcut.Description = "äöüß"
$Shortcut.IconLocation = $env:SYSTEMROOT + "\\system32\\shell32.dll,3"
$Shortcut.Save()
我也有一个调用 ps1 的 vbs 文件
create-link.vbs
command = "powershell.exe Get-Content ""C:\path\to\file\create-link.ps1"" | PowerShell.exe -noprofile"
set shell = CreateObject("WScript.Shell")
shell.Run command,0
这两个文件都使用 utf-8 编码保存。
这种结构是必要的,因为 ps1 需要完全无头运行,而不需要用户注意任何事情。通过 vbs 调用 ps1 解决了这个问题,如果有更好的方法,如果你让我知道,我会很高兴。
如果我直接调用 powershell 脚本或使用 "powershell.exe Get-Content ""C:\path\to\file\create-link.ps1"" | PowerShell.exe -noprofile" (通过使用 cmd)一切正常。 但是,如果我调用 vbs 来完成它通常可以工作的工作,但是“描述”中的德语变音符号只是问号,所以不知何故编码被打乱了。有没有办法解决这个问题?
【问题讨论】:
-
Get-Content也有一个-Encoding参数。 -
你为什么要调用 Powershell 而不是从 VBS 创建链接?
-
@zett42 我认为 VBS 出现在图片中的唯一原因是为了补偿 PowerShell 无法启动 自身 隐藏 - 请参阅 GitHub issue #3028。
-
如果您的问题尚未得到完全解答,请考虑 accepting 提供答案或提供反馈。
标签: windows powershell shell vbscript character-encoding