如何使用 PowerShell 从远程计算机获取所有 (IIS) 网站 status/state?
How to get all (IIS) websites status/state from remote machine using PowerShell?
我试图从远程读取 IIS 网站的状态。我试过下面的代码。
$Session = New-PSSession -ComputerName $serverName
$block = {
import-module 'webAdministration'
Get-ChildItem -path IIS:\Sites
}
Invoke-Command -Session $Session -ScriptBlock $block | Out-File -append $WebreportPath
但上面的命令只给我提供了具有 https 绑定的网站,当涉及到 https 时,它会抛出以下错误。
The data is invalid. (Exception from HRESULT: 0x8007000D)
+ CategoryInfo : NotSpecified: (:) [Get-ChildItem], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException,Microsoft.PowerShell.Commands.GetChildItemCommand
我正在尝试使用 IIS 7 重新安装 Windows Server 2008 R2。
请指导我。谢谢!
希望这对某人有所帮助。以下是我的发现和答案。
Powershell 仅远程发送对象,并使用可用模板渲染它们。
所以需要相应地给出一个模板。我用了"Format-Table"。
小心,如果你在外面使用 "Format-Table" 会导致同样的错误。记得在脚本块中使用它。
容易出错:
Invoke-Command -ComputerName $serverName { Import-Module WebAdministration; Get-ChildItem -path IIS:\Sites} | Format-Table | Out-File -append $WebreportPath
正确代码:
Invoke-Command -ComputerName $serverName { Import-Module WebAdministration; Get-ChildItem -path IIS:\Sites | Format-Table} | Out-File -append $WebreportPath
我指的是:
http://forums.iis.net/t/1155059.aspx?IIS+provider+and+PowerShell+remoting
祝你好运!
使用远程会话检索对象似乎有一些问题,但这不是阻塞问题(我也有 运行)。
为了防止写错,可以这样使用-ErrorAction
:
$Session = New-PSSession -ComputerName $serverName
$block = {
Import-Module 'webAdministration'
Get-ChildItem -path IIS:\Sites
}
Invoke-Command -Session $Session -ErrorAction SilentlyContinue -ScriptBlock $block |
Out-File -append $WebreportPath
这样您就不会看到远程处理错误,但您仍会收到所需的数据。
请注意,这会隐藏所有错误,因此您可能隐藏了您可能想要查看的错误。为此,您需要修复底层问题,这样您就可以删除 -ErrorAction
补丁。
我试图从远程读取 IIS 网站的状态。我试过下面的代码。
$Session = New-PSSession -ComputerName $serverName
$block = {
import-module 'webAdministration'
Get-ChildItem -path IIS:\Sites
}
Invoke-Command -Session $Session -ScriptBlock $block | Out-File -append $WebreportPath
但上面的命令只给我提供了具有 https 绑定的网站,当涉及到 https 时,它会抛出以下错误。
The data is invalid. (Exception from HRESULT: 0x8007000D)
+ CategoryInfo : NotSpecified: (:) [Get-ChildItem], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException,Microsoft.PowerShell.Commands.GetChildItemCommand
我正在尝试使用 IIS 7 重新安装 Windows Server 2008 R2。 请指导我。谢谢!
希望这对某人有所帮助。以下是我的发现和答案。
Powershell 仅远程发送对象,并使用可用模板渲染它们。 所以需要相应地给出一个模板。我用了"Format-Table"。 小心,如果你在外面使用 "Format-Table" 会导致同样的错误。记得在脚本块中使用它。
容易出错:
Invoke-Command -ComputerName $serverName { Import-Module WebAdministration; Get-ChildItem -path IIS:\Sites} | Format-Table | Out-File -append $WebreportPath
正确代码:
Invoke-Command -ComputerName $serverName { Import-Module WebAdministration; Get-ChildItem -path IIS:\Sites | Format-Table} | Out-File -append $WebreportPath
我指的是: http://forums.iis.net/t/1155059.aspx?IIS+provider+and+PowerShell+remoting
祝你好运!
使用远程会话检索对象似乎有一些问题,但这不是阻塞问题(我也有 运行)。
为了防止写错,可以这样使用-ErrorAction
:
$Session = New-PSSession -ComputerName $serverName
$block = {
Import-Module 'webAdministration'
Get-ChildItem -path IIS:\Sites
}
Invoke-Command -Session $Session -ErrorAction SilentlyContinue -ScriptBlock $block |
Out-File -append $WebreportPath
这样您就不会看到远程处理错误,但您仍会收到所需的数据。
请注意,这会隐藏所有错误,因此您可能隐藏了您可能想要查看的错误。为此,您需要修复底层问题,这样您就可以删除 -ErrorAction
补丁。