提问人:Norbert Yuhas 提问时间:8/6/2023 更新时间:8/6/2023 访问量:31
如何在 powershell 中使用 python 中的变量放置引号?
How to put quotes in powershell with variables inside python?
问:
我正在尝试使用paramiko通过ssh发送到服务器。 我无法让 paramiko 连续发送多个操作,所以我制作了一个在 ps 中工作的 powershell oneliner:
powershell.exe -noprofile -command "&Get-ADUser -Filter ('OfficePhone -like 888888') -Properties SID | Set-ADAccountPassword -Reset -NewPassword (ConvertTo-SecureString -AsPlainText Password! -Force -Verbose) -PAssThru | Unlock-ADAccount"
但是我不能在 python 中将其作为字符串插入,因为在 python 和 powershell 中都必须在任何地方使用引号。另外,我需要将两个变量传递给 powershell。 我试过这样:
commands = 'powershell "&Get-ADUser -Filter (\"OfficePhone -like f"{internal_number}"\") -Properties SID | Set-ADAccountPassword -Reset -NewPassword (ConvertTo-SecureString -AsPlainText f"{gen_password}" -Force -Verbose) -PAssThru | Unlock-ADAccount)\"'
为了检查,我还打印了命令 结果是这样的:
powershell "&Get-ADUser -Filter ("OfficePhone -like f"{internal_number}"") -Properties SID | Set-ADAccountPassword -Reset -NewPassword (ConvertTo-SecureString -AsPlainText f"{gen_password}" -Force -Verbose) -PAssThru | Unlock-ADAccount)"
如果我理解正确 - 变量没有被替换( 如何正确放置引号,以便一切正常?
答:
1赞
Turan-Yahya Gazizuly
8/6/2023
#1
在此代码中,我使用 f-strings(格式化字符串)将变量 internal_number 和 gen_password 插入到 PowerShell 命令中。若要对 PowerShell 命令中的双引号进行转义,需要使用 \”。这样,生成的命令字符串应包含格式正确的 PowerShell 命令,您可以在 paramiko SSH 调用中使用该命令。
internal_number = "888888"
gen_password = "Password!"
commands = (
f'powershell.exe -noprofile -command "&Get-ADUser -Filter (\\"OfficePhone -like {internal_number}\\") '
f'-Properties SID | Set-ADAccountPassword -Reset -NewPassword (ConvertTo-SecureString '
f'-AsPlainText \\"{gen_password}\\" -Force -Verbose) -PAssThru | Unlock-ADAccount"'
)
print(commands)
评论