Important Notice: On February 29th, this community was put into read-only mode. All existing posts will remain but customers are unable to add new posts or comment on existing. Please feel to join our Community Discord for any questions and discussions.

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