Answered

PowerShell script 'cannot find path' when deployed by PDQ

Currently have a PowerShell script that's supposed to get content of the file on a remote computer:

$send = gc \\$env:COMPUTERNAME\c$\$WINDOWS.~BT\Sources\Panther\setupact.log | Select-String uninstall

Obviously, when using PDQ Deploy, the target computer that is chosen will fill in for the $env:COMPUTERNAME variable.  However, when the script is deployed by PDQ, it keeps failing wi/ this error:

Get-Content : Cannot find path '\\nameOfComputerHere\c$\.~BT\Sources\Panther\setupact
.log' because it does not exist.
At C:\Windows\AdminArsenal\PDQDeployRunner\service-1\exec\smh.ps1:8 char:15
+ $send = gc <<<< \\$env:COMPUTERNAME\c$\$WINDOWS.~BT\Sources\Panther\setu
pact.log | Select-String uninstall
+ CategoryInfo : ObjectNotFound: (\\nameOfComputerHere\...er\setupact.l
og:String) [Get-Content], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetCo
ntentCommand

 

The file definitely exists as if I run this script manually and hard code the remote computer's name, it works just fine.  Any help will greatly be appreciated.

0

Comments

7 comments
Date Votes
  • I think you may have a copy/paste error. $WINDOWS does not exist, that's why the evaluated line becomes \.~BT\

    >Cannot find path '\\nameOfComputerHere\c$\.~BT\Sources\Panther\setupact.log'

    0
  • Appreciate the brief response Colby. 

    I saw that too, but looking at my PowerShell script $WINDOWS is clearly there.  

    It's odd because for a test, I moved the setupact.log file out of the $WINDOWS.~BT directory and into the C: drive and PDQ deployed it successfully which makes me want to believe there's something up wi/ the $WINDOWS.~BT directory that it doesn't like.  

    Like I mentioned, when I run it manually, through PowerShell, it works just fine, however I want to use PDQ Deploy because choosing the target makes it easier for filling in the env:COMPUTERNAME variable.  

    Thoughts?

    0
  • Can you share the whole script you're trying to run?

    0
  • Sure thing:

     

    $msg = new-object Net.Mail.MailMessage
    $smtp = new-object Net.Mail.SmtpClient("smtp.domain.com")
    $msg.From = "e-mail@domain.com"
    $msg.ReplyTo = "e-mail@domain.com"
    $msg.To.Add("support@domain.com")
    $msg.subject = "Upgrade Errors"
    $send = gc \\$env:COMPUTERNAME\c$\$WINDOWS.~BT\Sources\Panther\setupact.log | Select-String uninstall
    $body = @"
    $send
    "@
    $msg.body += $body
    $smtp.Send($msg)

     

    0
  • Just wanted to follow up & see if you were able to take a look at the whole script.  Let me know.  Thanks again !!

    0
  • Ah, it looks like the folder name actually starts with $. PowerShell interprets anything that starts with $ as a variable, so you have to escape the $ with `.

    $send = gc "\\$env:COMPUTERNAME\c$\`$WINDOWS.~BT\Sources\Panther\setupact.log" | Select-String uninstall

     

    2
  • That worked.  Can't thank you enough.

    1

Please sign in to leave a comment.

Didn't find what you were looking for?

New post