2014-04-24 57 views
0

我已經創建了一個腳本來循環顯示兩列的電子表格。我遇到的問題是當我運行invoke-command時局部變量不起作用。我已經添加了-ArgumentList參數,但我仍然收到有關$null參數的錯誤。任何人都知道我在這裏做錯了什麼?遠程腳本中的局部變量

foreach ($list in (Import-Csv C:\Users\joerod\Desktop\remove_users.csv)) { 
    Write-Output "Connecting to $($list.computer)..." 
    $myses = New-PSSession -ComputerName $list.computer 
    Invoke-Command -Session $myses -ScriptBlock { 
     Write-Output "Searching for software..." 
     Write-Output $list.user 

     $find_java = gwmi Win32_Product -Filter "Name LIKE '%Java'" | select -ExpandProperty IdentifyingNumber 
     if ($find_java -ne $null) { 
      Write-Output "Software found... Uninstalling..." 
      foreach ($i in $find_mktx) { 
       msiexec.exe /x $i /qn /passive /l*v! c:\uninst.log 
      } 
      Write-Output "Adding $($list.user) to security group" 
      $group = "CN=Java_removed,OU=Groups,OU=Resources,DC=Contoso,DC=LOCAL" 
      Add-ADGroupMember $group -Identity $list.user 
     } 
     else { 
      Write-Output "Could not find Java software installed" 
     } 
    } -ArgumentList $list 
}  

回答

1

問題是你試圖通過一個論據列表到你的else。如果你正確地格式化你的代碼,看起來很容易。

foreach($list in (Import-Csv C:\Users\joerod\Desktop\remove_users.csv)){ 
    Write-Output "Connecting to $($list.computer)..." 
    $myses = New-PSSession -ComputerName $list.computer 
    Invoke-Command -Session $myses -ScriptBlock { 
    Param($list) 
     Write-Output "Searching for software..." 
     Write-Output $list.user 

     $find_java = gwmi win32_product -filter "Name LIKE '%Java'" | select -ExpandProperty  IdentifyingNumber 
     if($find_java -ne $null){ 
      Write-Output "Software found... Uninstalling..." 
      foreach($i in $find_mktx){ 
       msiexec.exe /x $i /qn /passive /l*v! c:\uninst.log 
      } 
      Write-Output "Adding $($list.user) to security group" 
      $group = "CN=Java_removed,OU=Groups,OU=Resources,DC=Contoso,DC=LOCAL" 
      Add-ADGroupMember $group -Identity $list.user 
     } 
     else{ 
      Write-Output "Could not find Java software installed" 
     } 
    } -ArgumentList $list 

} 
+0

這是我的錯誤,當我複製的腳本結束,''後-ArgumentList $ list'是在正確的地方,還是同樣的錯誤 – JoeRod

+0

@JoeRod也不翼而飛了'參數($列表)您'invoke-command' ...那是一個複製錯誤嗎? – Cole9350

+0

啊,是的,我失蹤的參數,感謝兄弟。並感謝您不要居高臨下。 – JoeRod