繁体   English   中英

运行IIS Powershell脚本获取远程服务器列表?

[英]Running an IIS Powershell script for a list of remote servers?

我正在尝试从同一域中的100多个服务器中提取所有站点和绑定,并在它们上运行IIS(已经在txt文件中包含这些服务器的列表,因此不需要进行AD搜索)。 当我远程登录并在服务器本身上运行代码时,以下代码可成功将其从一台服务器中提取:

$myObject = @()
{
Foreach ($Site in get-website) 
{ 
   Foreach ($Bind in $Site.bindings.collection) 
   { 
      $myObject+=[pscustomobject]@{serverName = $vm;name=$Site.name;Protocol=$Bind.Protocol;Bindings=$Bind.BindingInformation; path=$Site.physicalPath}
   }
}
} $myObject | export-csv -Path C:\results.csv -NoTypeInformation

我遇到的问题是,当我创建下面列出的foreach循环时

$servers = (Get-Content results.txt)
foreach ($vm in $servers)

并在上面脚本的顶部运行它,csv表仅显示我运行它的服务器中站点/绑定的重复项,而不是从txt文件中列出的每个唯一服务器中提取结果。

从每台服务器获取结果的最佳方法是什么? 通过我的凭据以及登录服务器后,我拥有完整的管理员权限,几乎所有服务器都在运行Windows 2012。

Get-Website本身并不支持远程连接,因此您将需要使用PowerShell Remoting在所有服务器上运行它。 像这样:

Invoke-Command -Computer (Get-Content results.txt) `
               -ScriptBlock {
                    Get-Website |
                        ForEach-Object {
                         $site = $_
                         $_.bindings.collection |
                            ForEach-Object {                           
                                [pscustomobject]@{
                                    serverName = $env:COMPUTERNAME
                                    name=$site.Name
                                    Protocol=$_.Protocol
                                    Bindings=$_.BindingInformation
                                    path=$site.PhysicalPath
                                }
                            }
                        }
               } | Export-Csv -Path C:\results.csv -NoTypeInformation

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM