Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 从第一个流水线参数中选择值_Powershell - Fatal编程技术网

Powershell 从第一个流水线参数中选择值

Powershell 从第一个流水线参数中选择值,powershell,Powershell,我编写了一个PowerShell脚本来获取一些集群信息。我需要的一列来自管道中的第一个参数,我找不到返回其值的方法 function Get-SQL-Clusters { Param([string]$server) $servers = Get-Content -LiteralPath "C:\temp\sql_clusters.txt" if ($server -ne 1) { $files = foreach ($box in $servers)

我编写了一个PowerShell脚本来获取一些集群信息。我需要的一列来自管道中的第一个参数,我找不到返回其值的方法

function Get-SQL-Clusters {
    Param([string]$server)

    $servers = Get-Content -LiteralPath "C:\temp\sql_clusters.txt"
    if ($server -ne 1) {
        $files = foreach ($box in $servers) {
            Invoke-Command -ComputerName $box {
                Get-ClusterResource | Get-ClusterParameter
            } | Where-Object {
                $_.Name -eq "Address"
            } | Format-Table PSComputerName, ClusterObject, State, Name, Value -AutoSize
        }
    } else {
        Write-Warning "'$server' is not a valid path."
    }
    return $files
}
当我运行这个时,我得到了我需要的数据,但状态为空。它位于Get-ClusterResource中,但我主要寻找的IP位于Get-ClusterParameter中

理想情况下,我希望返回集群的名称、每个alwayson名称、它的IP和它的当前状态,以便我可以查看活动IP是在主站点上还是在DR站点上。

调用Invoke命令将Get ClusterResource | Get ClusterParameter调用放入它自己的脚本块{…},然后将计算这些表达式的结果传递到Where对象cmd。这可能不是预期的操作顺序

使用Select Object cmdlet在管道的中间位置投影结果,以便在以后的阶段访问所需的属性特定语法尚未检查;YMMV:

调用命令-ComputerName$box{Get ClusterResource |选择对象-属性状态,@{Name=ClusterParameter;表达式={Get ClusterParameter-InputObject${}}}}|其中对象{$$\.ClusterParameter.Name-eq

将生成以下对象:

State | ClusterParameter
------------------------
foo     ClusterParameter.ToString()

这几乎是最后一段代码。虽然还没有100%完成,但我现在得到了状态和IP值,以后会修复其余的。我做的另一个更改是停止使用文本文件,并为我的服务器创建了一个哈希表,因为我的文本文件存在格式问题

function Get-SQL-Clusters-scrap
            {
 param([string]$server)

  import-module c:\temp\sql_hashtable2.ps1
  $servers = $sql_servers.hadr

  if ($server -ne 1)
  {

   $files = ForEach ($box in $servers) {invoke-command -ComputerName $box {Get-ClusterResource | 
   foreach-object {($state) = ($_.State); $_ |
  get-clusterparameter |Where-Object {$_.Name -eq "Address"} |

    Format-Table  ClusterObject,@{Name=”State”;Expression={$state}}, Name, Value, PSComputerName -AutoSize}}}

   }           
              else 
              {Write-Warning "'$server' is not a valid path."}
              return $files
            }

我将不得不处理这个问题。部分问题是我在没有群集功能的服务器上运行该函数,这就是我使用invoke-command的原因。它不应该影响您编写其余命令的方式-这只是您将插入到您已经发布的内容中的内容。我将使用更多的locontext更新我的答案最终得到它w正在工作。在technet上发布了这篇文章,有人发布了几年前这个stackflow线程的链接。我使用了这个链接。玩弄了这些链接,但无法使其工作,所以我找到了一个我不再拥有的博客条目,并使其工作起来。我现在获得了状态和IP,但名称列为空,我将在明天或明天修复它下周。你可能想用绿色的勾号来标记这一点,作为你问题的答案