这有效
Dependencies\iis7psprov_x86.msi /qn /l* $SnapinInstallLog
Run Code Online (Sandbox Code Playgroud)
但事实并非如此
$SnapinInstaller = "Dependencies\iis7psprov_x86.msi"
$SnapinInstaller /qn /l* $SnapinInstallLog
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:您必须在'/'运算符的右侧提供值表达式.+ $ SnapinInstaller/q <<<< n/l*$ SnapinInstallLog
如何使用变量$ SnapinInstaller安装管理单元?
Kei*_*ill 10
PowerShell将其识别$SnapinInstaller为变量并将其评估为字符串.如果您希望PowerShell"调用"变量命名的命令,那么您可以使用调用运算符,&如下所示:
& $SnapinInstaller /qn /l* $SnapinInstallLog
Run Code Online (Sandbox Code Playgroud)
虽然您可以使用Invoke-Expression,但由于脚本注入攻击的可能性,通常可以避免,特别是对于用户提供的数据,例如:
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"
Run Code Online (Sandbox Code Playgroud)
这里发生了恶劣,因为用户能够注入任意脚本.
OTOH如果你有一个用单个字符串表示的束参数(并且没有用户提供的输入),Invoke-Expression可以在那个场景中派上用场,例如:
$psargs = "\\$computer -d -i 0 notepad.exe"
Invoke-Expression "psexec.exe $psargs"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16319 次 |
| 最近记录: |