我试图将文件从一台服务器复制到另一台服务器,这样它就不会要求我输入我的登录信息而且我不必在代码中存储密码。问题是,即使我提供了-Credential参数,它仍然会提供凭证请求GUI。这是我将密码存储在文件中的方式:
read-host -assecurestring | convertfrom-securestring | out-file C:\secString.txt
然后代码如下:
function GetSecureLogin() {
$username = "usa02xxxswg2\20xbackup"
$password = get-content C:\secString.txt | convertto-securestring
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password
}
function CopyFileToFolder ([string]$Source, [string]$destination){
Copy-Item "$Source" -Destination "$destination" -Credential $cred #this is where the login info box is coming up but shouldn't be
}
######################start here#####################
$cred = ""
GetSecureLogin
$tempSource = "filename.txt"
$ToLocation = "$ToLoc"
CopyFileToFolder $tempSource $ToLoc
有什么想法吗?我对PowerShell比较陌生,所以我可能会做些傻事。我不确定如何判断$ cred是否正在恢复我的复制功能,或者它是否超出范围。
我已经查看了这些示例,但我无法确定是否需要做一些不同的事情,因为他们正在指定服务器信息,我试图避免这样做,因为我只是想像我以前一样使用UNC路径。复制工作正常,没有登录,因为我使用我的Active Directory登录来保存任务。现在我们要使用本地保存的登录(运行脚本的位置),然后在尝试访问其他服务器时需要不同的本地登录。
copy-item with alt cred, powershell without prompt for cred, copy without cred, copy with alt cred, cred without password prompt
答案 0 :(得分:0)
我正在试图弄清楚是否从我的GetSecureLogin函数返回$ cred,并将其分配给脚本主要部分中的$ cred将解决问题,当我进行复制时它要求我输入登录信息。看起来我的同事移动了所有目录,所以一旦我找出他移动到哪里,我仍然要测试这个。
答案 1 :(得分:0)
看起来我想通了。我就像这个链接那样做了。这有点棘手,因为我不必使用我的共享名之后的目录,但是一旦我摆脱了子目录,它就有效了。