IIS服务器上的Powershell invoke-command不会列出所有列值

时间:2016-03-08 17:37:40

标签: powershell iis

我对PowerShell相对较新,可能没有正确说出问题。所以,请原谅我。

这是我遇到的问题

当我使用Get -...命令列出它们时,我想显示应用程序和/或虚拟目录数据的完整列表。 这是负责输出的脚本部分:

............................Rest of the script


Import-Csv "$CSV" | ForEach-Object {
if     ($_.Type -eq "Application"){        
        invoke-command -ComputerName $_.Server -ScriptBlock { param($VirtualPath, $PhysicalPath) Import-Module WebAdministration; New-Item -Path $VirtualPath -physicalPath $PhysicalPath -type Application } -Args $vPath, $pPath
        invoke-command -ComputerName $_.Server -ScriptBlock { param($VirtualPath, $ApplicationPool) Import-Module WebAdministration; Set-ItemProperty $VirtualPath -Name ApplicationPool -Value $ApplicationPool } -Args $vPath, $AppPool
     }
ElseIf ($_.Type -eq "VirtualDirectory"){            
        invoke-command -ComputerName $_.Server -ScriptBlock { param($VirtualPath, $PhysicalPath) Import-Module WebAdministration; New-Item -Path $VirtualPath -physicalPath $PhysicalPath -type VirtualDirectory } -Args $vPath, $pPath
     }    
else {
        Write-Host "Wrong type for" $_.Server"!
     }
}
    .......... rest of the script

输出

Name             Application pool   Protocols    Physical Path                                                          PSComputerName
----             ----------------   ---------    -------------                                                          --------------   
                                                 D:\sites\homedir                          Server1.domain.com                                               
TestS            DefaultAppPool     http         D:\sites\homedir                          Server2.domain.com 

首先,这里输出第一行存在问题。其次,当涉及到应用程序时,它会在设置AppPool之前生成此输出,这对我来说完全没用,因为我的目标是获得完整输出并将其复制/粘贴到案例单中。 因此,我在脚本末尾添加了以下循环,以显示与指定别名相关的所有记录:

Import-Csv "$CSV" | ForEach-Object {
    invoke-command -ComputerName $_.Server -ScriptBlock { param($IIS_Alias) Import-Module WebAdministration; Get-WebApplication -Site iDoxs -Name $IIS_Alias } -Args $Alias
    invoke-command -ComputerName $_.Server -ScriptBlock { param($IIS_Alias) Import-Module WebAdministration; Get-WebVirtualDirectory -Site iDoxs -Name $IIS_Alias } -Args $Alias
}

应用程序输出:

Name             Application pool   Protocols    Physical Path                            PSComputerName                                                        
----             ----------------   ---------    -------------                            --------------                                                        
TestS            ASP.NET v4.0       http         D:\sites\homedir                          server1.domain.com                                           
TestS            ASP.NET v4.0       http         D:\sites\homedir                          server2.domain.com

虚拟目录的输出:

                                                        D:\sites\homedir                   server1.domain.com                                   
                                                        D:\sites\homedir                   server2.domain.com

不像应用程序那样漂亮,但至少有些东西

最后一个问题:

  1. 如何在创建项目时禁用输出?

  2. 如何使虚拟目录显示为与应用程序一样好用? (包含虚拟文件夹的标签和别名,此显示中似乎缺少这些标签和别名,但如果它们单独显示则显示)

0 个答案:

没有答案