使用特定凭据调用远程命令/脚本

时间:2016-09-22 14:54:01

标签: windows powershell batch-file copy

我正在尝试使用powershell调用远程批处理脚本。

以下是一些示例代码:

Invoke-Command -ComputerName 127.0.0.1 {C:\myfile.bat}

myfile.bat包含:

echo %USERNAME%
copy \\10.10.10.10\sample c:\toMe

当我在cmd窗口中本地调用myFile.bat时,一切都很好。我的用户名是预期的。但是,当我使用powershell运行Invoke-Command时,它会给我这个错误,而用户名仍然是正确的:

Access is denied. 

这是我到目前为止所尝试的内容。

$password = ConvertTo-SecureString "MyPassword" -AsPlainText -Force
$username = "Domain\Username"
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password
Invoke-Command -ComputerName 127.0.0.1 {myfile.bat} -credential $cred

然而,虽然这等同于相同的用户名,但它仍然给我同样的错误。

然后我尝试创建一个PSDrive,并执行命令:

New-PSDrive -Name X -PSProvider FileSystem -Root \\10.10.10.10\sample
Invoke-Command -ComputerName 127.0.0.1 {myfile.bat}
Remove-PSDrive X

但我也得到同样的错误。我现在完全难过了。在不更改批处理脚本的情况下,我可以在PowerShell中执行哪些操作来使其满足此请求?

1 个答案:

答案 0 :(得分:0)

这对你有用吗?

$password='p@ssword'|convertto-securestring -asplaintext -force;
$cred=new-object -typename system.management.automation.pscredential('Domain\Username',$password);
Invoke-Command -computer 127.0.0.1 {c:\myfile.bat} -credential $cred;

$password='p@ssword'|convertto-securestring -asplaintext -force;
$cred=new-object -typename system.management.automation.pscredential('Domain\Username',$password);
$s = New-PSSession -computer "127.0.0.1" -credential $cred;
Invoke-Command -Session $s -ScriptBlock { cmd /c "c:\myfile.bat" };
Remove-PSSession $s;

另外,您可以使用domain\username

测试更改username