在PS v4上运行时,Powershell v2.0 Foreach循环失败

时间:2016-07-12 15:41:01

标签: powershell foreach powershell-v4.0

你好,PS v4(从2012服务器运行)对用V2编写的Foreach循环的反应有何不同?

我有这个简单的脚本在v2中工作但在v4上产生错误:

$Serverlist = Import-CSV "D:\PendingReboot\AllADServers.csv"
    Foreach ($Computer.Name in $Serverlist)
    {      
          $ADComputer = $Computer.Name
          $ADOwner = $Computer.Description
          If (!($Computer.Description))
          {$ADOwner = "Unassigned"}
          $ADOU = $AD | select DistinguishedName 
          "$ADComputer $ADOwner"
    }

Server1 Team1
Server2 Team2
etc. etc.

V4中的错误是:

At D:\PendingReboot\Test.ps1:2 char:23
+     Foreach ($Computer.Name in $Serverlist)
+                       ~
Missing 'in' after variable in foreach loop.
At D:\PendingReboot\Test.ps1:2 char:43
+     Foreach ($Computer.Name in $Serverlist)
+                                           ~
Unexpected token ')' in expression or statement.
+ CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingInInForeach

1 个答案:

答案 0 :(得分:3)

PetSerAl的评论是正确的。您应该使用foreach ($Computer in $ServerList)。至于为什么它在PowerShell v2中运行而不在v4中,我只能假设他们纠正了行为,因为它应该在v2中失败。

基本上你的.Name部分没有做任何事情,因为你仍然需要在循环的第一行指定.Name

基本上,这是一个语法错误,未在早期版本中捕获。