This won't work either:
Copy-Item $args[0] "\\$Computers[$I]\$Args[1]"
You need to put each expression in a subexpression notation if you want it
to be expanded inside a string:
Copy-Item $args[0] "\\$($Computers[$I])\$($Args[1])"
-----
Shay Levi
$cript Fanatic
http://scriptolog.blogspot.com Quote:
> 1) I created this script:
>
> [string[]]$Computers = "Server1", "Server2", "Server3", "Server4",
> "Server5", "Server6", "Server7", "Server8", "Server9"
> [int]$NoOfComputers = $Computers.length
> $NoOfComputers.gettype()
> [int32]$i = 0
> $I.gettype()
> if ($args.length -gt 1) {
> "I am copying "+$args[0]+" to PC:"
> if (Test-Path $args[0]) {
> for ($i=0, $i -lt $NoOfComputers, $i++) {
> $Computers[$I]
> Copy-Item $args[0] "\\$Computers[$I]\$Args[1]"
> }
> }
> }
> 2) I run it:
> PS C:\Aplikace\CCV> .\CopyToAllPc.ps1 WakeOnLAN.bat C$\Aplikace\CCV
> 3) It shows this error:
>
> IsPublic IsSerial Name BaseType
> -------- -------- ---- --------
> True True Int32
> System.ValueType
> True True Int32
> System.ValueType
> I am copying WakeOnLAN.bat to PC:
> The '-lt' operator failed: Could not compare "0" to "System.Object[]".
> Error: "Cannot convert "System.Object[]" to "Sys
> tem.Int32".".
> At C:\Aplikace\CCV\CopyToAllPc.ps1:31 char:22
> + for ($i=0, $i -lt <<<< $NoOfComputers, $i++) {
> 4) Please, where is problem?
>