我正在尝试使用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中执行哪些操作来使其满足此请求?
答案 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