Powershell 远程在 IIS:\AppPools 查找中返回误报

Powershell remote returning false positive on IIS:\AppPools lookup

无论为 $appPoolName 输入什么值,当发送到远程计算机时,对于 Test-Path 始终 returns 为真,即使不存在这样的池也是如此。当 运行 在这些机器上的本地 powershell 中时,将返回正确的结果。已验证 PSRemote 在目标计算机上已启用。

$appPoolName = 'Abc123'
$scriptBlock = {
    Import-Module WebAdministration
    if (Test-Path IIS:\AppPools$appPoolName) {
        Write-Host "Already installed."
    } else {
        Write-Host "Installing..."
        $appPool = New-Item –Path IIS:\AppPools$using:appPoolName
        $appPool | Set-ItemProperty -Name managedRuntimeVersion -Value 'v4.0'
    }
}
Invoke-Command -ComputerName LT-CODE8 -ScriptBlock $scriptBlock

为什么这个报告是真的,或者我可以采取什么步骤来进一步诊断?

我想你错过了 $using: 在第一次调用 $appPoolname:

if (Test-Path IIS:\AppPools$using:appPoolName) {

可能需要在远程计算机上启用 cred-ssp。请参阅此主题:https://social.technet.microsoft.com/Forums/scriptcenter/en-US/3ea1ac5a-60f4-4ba1-9bdf-1119e2e5c896/testpath-fails-on-remote-computer-with-invokecommand?forum=ITCG