Not understanding error

Welcome Forums General PowerShell Q&A Not understanding error

This topic contains 2 replies, has 3 voices, and was last updated by

 
Member
5 years, 4 months ago.

  • Author
    Posts
  • #12003

    Participant
    Points: 0
    Rank: Member

    Running this script...

     $erroractionpreference = “Stop”
     $servers = Get-Content -path C:\symantecinstallation\reports\WEBDEV.csv
     foreach ($server in $servers){
     $server
     $os = (Get-WmiObject -computername $server -class Win32_OperatingSystem ).osarchitecture
      If ($os -eq “64-bit”) {
     Write-host "running 64 $server"
     $arSourceFolders1 = ("\\snappsepp03s\sep_clients\msi\My Company_2 Mid-West_Servers_STL_Co-Lo_Web Dev Servers_WIN64BIT_Server\Symantec Endpoint Protection version 12.1.2015.2015 - English")
     $arDestinationFolders1 = ("\\$server\C$\Windows\Temp\Symantec Endpoint Protection version 12.1.2015.2015 - English")
     $cmd1 = robocopy $arSourceFolders1 $arDestinationFolders1 /MIR /XA:SH /ipg:0 /w:0 /log:c:\symantecInstallation\robocopy\robocopy_"$server"log.txt
     start-process $cmd1 -Wait
     Write-Host "Copy 64bit Symantec Install Complete $server"
         Invoke-Command -Computername $server -ScriptBlock {
    $msifile= 'msiexec /i C:\windows\temp\Symantec Endpoint Protection version 12.1.2015.2015 - English\sep64.msi' 
    $arguments= ' /qn SYMREBOOT=ReallySuppress /l*v C:\windows\Temp\sep.log' 
    Start-Process `
         -file  $msifile `
         -arg $arguments `
         -passthru | wait-process}

    I get the following error?

    Start-Process : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'FilePath'. Specified method is not supported.
    At C:\SymantecInstallation\Symantecinstallerworkinprogress.ps1:11 char:16
    + start-process $cmd1 -Wait
    + ~~~~~
    + CategoryInfo : InvalidArgument: (:) [Start-Process], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.StartProcessCommand

    though the copy command is working?

  • #12008

    Participant
    Points: 0
    Rank: Member

    $arSourceFolders1 = ("\\snappsepp03s\sep_clients\msi\My Company_2 Mid-West_Servers_STL_Co-Lo_Web Dev Servers_WIN64BIT_Server\Symantec Endpoint Protection version 12.1.2015.2015 – English")
    $arDestinationFolders1 = ("\\$server\C$\Windows\Temp\Symantec Endpoint Protection version 12.1.2015.2015 – English")
    $cmd1 = robocopy $arSourceFolders1 $arDestinationFolders1 /MIR /XA:SH /ipg:0 /w:0 /log:c:\symantecInstallation\robocopy\robocopy_"$server"log.txt
    start-process $cmd1 -Wait

    Your error is in these lines I think. Try removing the () from round the file paths in $arSourceFolders1 & $arDestinationFolders1

  • #12009

    Member
    Points: 0
    Rank: Member

    This line is a problem:

    $cmd1 = robocopy $arSourceFolders1 $arDestinationFolders1 /MIR /XA:SH /ipg:0 /w:0 /log:c:\symantecInstallation\robocopy\robocopy_"$server"log.txt

    You're not creating a string there, you're executing the command. $cmd1 will contain an array of strings which are the output from robocopy. Here's what I think you probably intended:

    $arguments = "$arSourceFolders1 $arDestinationFolders1 /MIR /XA:SH /ipg:0 /w:0 /log:c:\symantecInstallation\robocopy\robocopy_${server}log.txt"
    Start-Process -FilePath robocopy.exe -ArgumentList $arguments -Wait
    

    I'm not sure what the advantage is to using Start-Process here, though. As you've pointed out, robocopy is working fine when you just run the command.

The topic ‘Not understanding error’ is closed to new replies.

denizli escort samsun escort muğla escort ataşehir escort kuşadası escort