gpt4 book ai didi

powershell - 在 Powershell 中使用加密密码作为 CMD 的参数

转载 作者:行者123 更新时间:2023-12-03 00:35:59 28 4
gpt4 key购买 nike

我正在尝试使用加密的密码文件通过 Powershell 执行 Oracle EXPDP(Oracle 数据泵)命令,这样我就可以将数据库密码保存在我的 git 存储库之外。这是我生成文件的代码如下所示:
"Password1" | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File "C:\Backups\dbPassword.txt"
显然 Password1 不是实际密码,但你明白了......

我想编写一个脚本来解密该文件,然后获取解密的“Password1”值并在 expdb 命令中使用它作为我的数据库密码。到目前为止,这是我想出的:

$dbPassword =  cat C:\backups\dbPassword.txt | convertto-securestring -AsPlainText -Force
$timeStamp = "$(get-Date -f MMddyyyy)"
$expdb = 'EXPDP'
$dbCredential = 'system/'+$dbPassword
$expdbDirectory = 'directory=backups'
$expdbFull = 'full=Y'
$expdbDRFileNamePrefix = 'EXPALL_DR_' + $timeStamp
$expdbDRFileNameDMP = $expdbDRFileNamePrefix + '.DMP'
$expdbDRFileNameLOG = $expdbDRFileNamePrefix + '.log'
$expdbDRFile = 'file=' + $expdbDRFileNameDMP
$expdbDRLog = 'log=' + $expdbDRFileNameLOG

$command = $expdb + ' ' + $dbCredential + ' ' + $expdbDirectory + ' ' + $expdbFull + ' ' + $expdbDRFile + ' ' + $expdbDRLog

Invoke-Expression $command

当我执行此操作时,我收到以下错误:
EXPDP : 
At line:1 char:1
+ EXPDP system/System.Security.SecureString directory=backups full=Y fi ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError

Export: Release 11.2.0.1.0 - Production on Fri Oct 14 16:09:55 2016
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
UDE-01017: operation generated ORACLE error 1017
ORA-01017: invalid username/password; logon denied
Username:

我假设我需要使用等效的“toString”命令来使其成为命令行的完全纯文本。任何人都知道这是什么,或者是否有办法使用 PSCredential 对象来做到这一点?

谢谢!

最佳答案

密码不会自行解密,因此您需要自己进行。最简单的方法是创建一个 PSCredential对象,如 @briantist建议。它允许通过其GetNetworkCredential() 检索(未加密的)密码。方法。

$dbPassword = Get-Content 'C:\backups\dbPassword.txt' |
ConvertTo-SecureString -AsPlainText -Force
$cred = New-Object Management.Automation.PSCredential('system', $dbPassword)
...
$command = $expdb + ' ' + $cred.UserName + '/' +
$cred.GetNetworkCredential().Password + ...

但是,您将未加密的密码存储在文件中,并且您的外部命令似乎无论如何都需要纯文本凭据,因此在从文件传输到命令的过程中加密密码没有意义。这就像在一个空旷的地方 build 一扇门。

useless gate is useless

关于powershell - 在 Powershell 中使用加密密码作为 CMD 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40051388/

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