如何将包含美元符号的参数传递给Powershell中的程序?

问题描述 投票:1回答:1

我最近开始学习Powershell。我的问题是我试图运行Powershell脚本来解冻远程计算机,但是Time Freeze的参数之一包含一个美元符号。我该怎么办?

基本上我需要做的是运行以下命令:

cmd.exe /c "C:\Program Files\Toolwiz Time Freeze 2017\ToolwizTimeFreeze.exe" /unfreeze /usepass=$password

美元符号是密码的一部分。如果我直接在远程计算机上的Powershell控制台上运行它,则它可以工作[[(我只需要在$ password周围添加单引号)。但是,当我尝试从本地计算机运行脚本时,该脚本卡在了该脚本上,因此必须按Ctrl C才能将其取消。

有问题的脚本是这个:

$User = "user" $PWord = ConvertTo-SecureString "password" -AsPlainText -Force $Ip = Read-Host -Prompt 'Insira o IP da maquina de destino:' $Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord $sess = New-PSSession -Credential $Cred -ComputerName $Ip Enter-PSSession $sess Invoke-Command -ComputerName $Ip -ScriptBlock { cmd.exe /c "C:\Program Files\Toolwiz Time Freeze 2017\ToolwizTimeFreeze.exe" /unfreeze /usepass=$password} -Credential $Cred Remove-PSSession $sess Exit-PSSession

我尝试使用Start-Process -Filepath和&来运行Time Freeze,但是它都不起作用(脚本已执行但什么都没发生),但是当我尝试运行其他命令时,例如在上创建新文件夹远程计算机或重新启动它,即可正常运行。

我不知道还能尝试什么。

Edit1:我尝试使用单引号将参数传递,并且我也尝试使用-argumentlist,但两者均无效。

powershell remote-access
1个回答
0
投票
您是否尝试过将密码中的$转义?:

/usepass="`$password"

不知道这是否可行,如果不能,可以将密码分配给变量,然后将其作为参数提供

$mypassword = "`$password"

© www.soinside.com 2019 - 2024. All rights reserved.