这有效Dependencies\iis7psprov_x86.msi /qn /l* $SnapinInstallLog但这不是$SnapinInstaller = "Dependencies\iis7psprov_x86.msi"$SnapinInstaller /qn /l* $SnapinInstallLog我收到以下错误:您必须在'/'运算符的右侧提供一个值表达式。+ $ SnapinInstaller / q 如何获得使用变量$ SnapinInstaller安装的管理单元? (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 PowerShell将$SnapinInstaller识别为变量并将其求值-字符串。如果您希望PowerShell“调用”由变量命名的命令,则可以使用调用运算符&,如下所示:& $SnapinInstaller /qn /l* $SnapinInstallLog虽然可以使用Invoke-Expression,但是通常可以避免使用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 -whatifPS> Invoke-Expression "$SnapinInstaller /qn /l* $SnapinInstallLog"在这里发生错误是因为用户能够注入(inject)任意脚本。OTOH如果您有一堆参数用单个字符串表示(并且没有用户提供的输入),那么在这种情况下ojit_code会派上用场,例如:$psargs = "\\$computer -d -i 0 notepad.exe"Invoke-Expression "psexec.exe $psargs" (adsbygoogle = window.adsbygoogle || []).push({});
08-07 21:25