我有一个powershell脚本,可以简单地更新几个不同的Web服务器上的文件。这些Web服务器中的每一个都具有不同的本地凭据,我需要提供这些凭据才能访问相关文件。如何更新我的脚本以实现此目的?
String first_win = driver.getWindowHandle();
driver.findElement(By.xpath("your_xpath")).click();
new WebDriverWait(driver,5).until(ExpectedConditions.numberOfWindowsToBe(2));
Set<String> s1 = driver.getWindowHandles();
Iterator<String> i1 = s1.iterator();
while(i1.hasNext())
{
String next_win = i1.next();
if (!first_win.equalsIgnoreCase(next_win))
{
driver.switchTo().window(next_win);
System.out.println("Working on Sign In Window");
}
}
同样,每个服务器都有自己需要使用的本地管理员凭据。
答案 0 :(得分:2)
实现此目的的一种方法是,如果您真的被迫使用本地帐户(避免此问题是拥有域的目的之一),则使用net use
在服务器上进行身份验证,复制文件,然后断开连接例如:
$userName = Read-Host "Enter user name for computer1"
net use \\computer1\ipc$ /user:$userName *
Set-Content \\computer1\c$\whatever\file.htm "Content here"
net use \\computer1\ipc$ /delete
当然,您可以在循环中概括计算机名称。在此示例中,您必须手动输入每台计算机的用户名和密码。
答案 1 :(得分:1)
由于-Credential
的{{1}}参数似乎不起作用(如Bill_Stewart pointed out),您基本上有3个选项AFAICS:
Set-Content
按照his answer中建议的Bill验证会话,然后写入UNC路径。通过net use
或PoSh方式映射网络驱动器:
net use
在远程服务器上运行$username = 'Administrator'
$password = ConvertTo-SecureString 'password' -AsPlainText -Force
$cred = New-Object Management.Automation.PSCredential ($username, $password)
$drive = New-PSDrive -Name X -PSProvider FileSystem -Root "\\$server\c$\blah" -Persist -Credential $cred
Set-Content -Path 'X:\foo.htm' -Value $statusMessage
$drive | Remove-PSDrive
并将其写入本地路径。
Set-Content
对于两种PowerShell方法,您必须准备一个PSCredential
对象,如上所示,或者只是传递用户名(在这种情况下,系统会提示您输入密码)。