我正在尝试以下 appcmd 命令:
appcmd list app /site.name:"misechko.com.ua-DEV" /xml | appcmd list vdir /in /text:physicalPath
misechko.com.ua-DEV 是 IIS 中的正确站点名称。appcmd 已在路径中注册;
当我尝试在 cmd.exe 中执行命令时收到以下错误输出:
错误(hresult:8007000d,消息:输入包含错误元素,这可能表明产生输入的操作失败。)
应用程序设置中有什么错误?我想我混合使用了 cmd 和 powershell 方法,但上述脚本在 PowerShell 中也不起作用。最好使用 PowerShell 通过网站名称获取路径的方法。
PS:我的 PowerShell 替代方案也不起作用:
$appCmd = "$Env:SystemRoot\system32\inetsrv\appcmd.exe"
$appcmd list app /site.name:"misechko.com.ua-DEV" /xml | $appcmd list vdir /in /text:physicalPath
谢谢!
答案1
经过自己研究并找到了解决方案:
function GetPhysicalPath ([String]$siteName) {
function Get-PipelineInput
{
end {
[xml]$appConfigXml = $input
return $appConfigXml.application.virtualDirectory.physicalPath
}
}
$appCmd = "$Env:SystemRoot\system32\inetsrv\appcmd.exe"
return & $appCmd list app /site.name:"$siteName" /config | Get-PipelineInput
}
答案2
这对我也有用。以管理员身份运行 cmd。
appcmd list app /site.name:"Default Web Site" /path:"/" /xml | appcmd list vdir /in /text:physicalPath