如何使用 ps1 脚本打开 image.png?
How to open image.png using ps1 script?
将下面的$usbDriveLetter
变量设置为自动查找USB驱动器盘符,并使用该变量打开USB上的图像不起作用。它从字面上打印 "G:\image.png" 在 cmd.
$usbDriveLetter = (gwmi win32_volume -f 'label=''USB_NAME_HERE''').Name;
"$usbDriveLetter" + "image.png"
但是,如果我不使用 var 并在 PowerShell 脚本中将 "G:\" 设置为静态,则图像可以正常打开。
G:\image.png
那我做错了什么?我们如何使用 ps1 脚本动态打开图像?
当组合两个字符串时,您会得到一个字符串。如果您引用路径 ("G:\image.png"
),它将表现相同。
使用Invoke-Item
执行路径:
$usbDriveLetter = (gwmi win32_volume -f 'label=''USB_NAME_HERE''').Name
Invoke-Item -Path ("$usbDriveLetter" + "image.png")
您也可以使用 call-operator &
:
$usbDriveLetter = (gwmi win32_volume -f 'label=''USB_NAME_HERE''').Name
& ("$usbDriveLetter" + "image.png")
提供了有效的解决方案。
至于当你需要&
,PowerShell的调用运算符:
为了执行一个命令/打开一个不是指定为未加引号的文字字符串的文档, 你需要 &
.
也就是说,当您指定命令名称(或路径)/文档文件名(或路径)时,需要&
:
或者:作为 引号字符串(例如,"G:\image.png"
)
或:作为表达式的结果(例如,("$usbDriveLetter" + "image.png")
;同上 $(...)
)
注:
在打开一个文档(而不是调用可执行文件)的情况下,您可以使用Invoke-Item
而不是 &
.
如果您尝试在文件资源管理器中打开文件夹路径,仅 Invoke-Item
有效。
至于为什么需要&
:
PowerShell 有两种 基本解析模式:
argument mode,其工作方式类似于传统的 shells
expression 模式,其工作方式类似于传统的编程语言。
运行 Get-help about_Parsing
介绍了这些模式。
简而言之,它是第一个令牌决定应用哪种模式,为了execute / open something,必须在argumentmode中解析(在expressionmode ,结果就是 output);因此,第一个标记必须是:
- 或者:文字,不带引号的 command/document 名称或路径,如前所述。
- 或:
&
,在这种情况下,下一个参数 - 然后可以指定为带引号的字符串或表达式 - 被解释为命令/文档名称或执行/打开的路径。
将下面的$usbDriveLetter
变量设置为自动查找USB驱动器盘符,并使用该变量打开USB上的图像不起作用。它从字面上打印 "G:\image.png" 在 cmd.
$usbDriveLetter = (gwmi win32_volume -f 'label=''USB_NAME_HERE''').Name;
"$usbDriveLetter" + "image.png"
但是,如果我不使用 var 并在 PowerShell 脚本中将 "G:\" 设置为静态,则图像可以正常打开。
G:\image.png
那我做错了什么?我们如何使用 ps1 脚本动态打开图像?
当组合两个字符串时,您会得到一个字符串。如果您引用路径 ("G:\image.png"
),它将表现相同。
使用Invoke-Item
执行路径:
$usbDriveLetter = (gwmi win32_volume -f 'label=''USB_NAME_HERE''').Name
Invoke-Item -Path ("$usbDriveLetter" + "image.png")
您也可以使用 call-operator &
:
$usbDriveLetter = (gwmi win32_volume -f 'label=''USB_NAME_HERE''').Name
& ("$usbDriveLetter" + "image.png")
至于当你需要&
,PowerShell的调用运算符:
为了执行一个命令/打开一个不是指定为未加引号的文字字符串的文档, 你需要 &
.
也就是说,当您指定命令名称(或路径)/文档文件名(或路径)时,需要&
:
或者:作为 引号字符串(例如,
"G:\image.png"
)或:作为表达式的结果(例如,
("$usbDriveLetter" + "image.png")
;同上$(...)
)
注:
在打开一个文档(而不是调用可执行文件)的情况下,您可以使用
Invoke-Item
而不是&
.如果您尝试在文件资源管理器中打开文件夹路径,仅
Invoke-Item
有效。
至于为什么需要&
:
PowerShell 有两种 基本解析模式:
argument mode,其工作方式类似于传统的 shells
expression 模式,其工作方式类似于传统的编程语言。
运行 Get-help about_Parsing
介绍了这些模式。
简而言之,它是第一个令牌决定应用哪种模式,为了execute / open something,必须在argumentmode中解析(在expressionmode ,结果就是 output);因此,第一个标记必须是:
- 或者:文字,不带引号的 command/document 名称或路径,如前所述。
- 或:
&
,在这种情况下,下一个参数 - 然后可以指定为带引号的字符串或表达式 - 被解释为命令/文档名称或执行/打开的路径。