gpt4 book ai didi

powershell - 您必须在 '/' 运算符的右侧提供一个值表达式

转载 作者:行者123 更新时间:2023-12-04 17:27:57 26 4
gpt4 key购买 nike

这有效

Dependencies\iis7psprov_x86.msi /qn /l* $SnapinInstallLog

但这并不
$SnapinInstaller = "Dependencies\iis7psprov_x86.msi"
$SnapinInstaller /qn /l* $SnapinInstallLog

我收到以下错误:
您必须在“/”运算符的右侧提供一个值表达式。
+ $SnapinInstaller/q <<<< n/l* $SnapinInstallLog

如何使用变量 $SnapinInstaller 安装管理单元?

最佳答案

PowerShell 识别 $SnapinInstaller作为变量并将其评估为字符串。如果您希望 PowerShell “调用”由变量命名的命令,则使用调用运算符 &像这样:

& $SnapinInstaller /qn /l* $SnapinInstallLog

虽然您可以使用 Invoke-Expression ,由于脚本注入(inject)攻击的可能性,通常会避免这种情况,尤其是用户提供的数据,例如:
PS> $SnapinInstallLog = Read-Host "Enter log file name"
Enter log file name: c:\temp\snapin.log; remove-item C:\xyzzy -r -force -whatif
PS> Invoke-Expression "$SnapinInstaller /qn /l* $SnapinInstallLog"

这里发生了错误,因为用户能够注入(inject)任意脚本。

OTOH,如果您在单个字符串中表示一堆参数(并且没有用户提供输入), Invoke-Expression在这种情况下可以派上用场,例如:
$psargs = "\\$computer -d -i 0 notepad.exe"
Invoke-Expression "psexec.exe $psargs"

关于powershell - 您必须在 '/' 运算符的右侧提供一个值表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4748867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com