gpt4 book ai didi

powershell - 包含双引号和单引号的Powershell变量

转载 作者:行者123 更新时间:2023-12-02 23:54:16 25 4
gpt4 key购买 nike

诚然,菜鸟问题...我正在尝试设置PowerShell脚本来创建计划任务以备份SQL Express数据库。我正在按照以下说明进行操作:

https://blogs.technet.microsoft.com/heyscriptingguy/2015/01/16/use-powershell-to-create-scheduled-task-in-new-folder/

它们可以很好地完成大多数任务,但是我需要做的论点已经包含了双引号和单引号,并且它抛弃了一切。我在Task Scheduler中拥有的参数是:

/C osql -U sa -P Password -S localhost\INSTANCE -Q "Backup Database DATABASE to disk = 'C:\DB Backups\database.bak' with init"

在使用双引号和双引号的情况下,如何将整个字符串转换为变量?

编辑:失败的特定部分是:
Function Create-AndRegisterApplogTask

{

Param ($taskname, $taskpath)

$action = New-ScheduledTaskAction -Execute 'CMD' -Argument "/C osql -U sa -
P Password -S localhost\INSTANCE -Q "Backup Database DATABASE to disk = 'C:\DB Backups\database.bak' with init""

$trigger = New-ScheduledTaskTrigger -Daily -At 9am

Register-ScheduledTask -Action $action -Trigger $trigger -TaskName
$taskname -Description "Daily Backup of IRWSDB Database" -TaskPath $taskpath

}

这是错误的,因为它看到了
"/C osql -U sa -P Cedara123 -S localhost\WEBACCESS -Q "

用引号括起来,然后看到:
Backup Database IRWSDB to disk = 

在引号之外,然后
'C:\DB Backups\IRWSDB.bak'

用单引号引起来,然后再跟
with init

最后在引号之外再加上:
""

我也尝试将-Argument参数更改为$ Argument并尝试声明:
$argument = "/C osql -U sa -P Password -S localhost\INSTANCE -Q "Backup Database DATABASE to disk = 'C:\DB Backups\database.bak' with init""

但是我仍然不知道如何使它显示为一行文本。

最佳答案

您可以使用反引号对字符串内的双引号进行转义。尝试:

$Arguments = "/C osql -U sa -P Password -S localhost\INSTANCE -Q `"Backup Database DATABASE to disk = 'C:\DB Backups\database.bak' with init`"" 

通常,如果命令过于棘手,我最终会为该操作添加一个批处理脚本。

关于powershell - 包含双引号和单引号的Powershell变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49457899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com