我有一个我试图实施的脚本。如果我单独运行每一行,它就可以正常工作。但是,如果我将它放在一个函数中,或者运行PowerGUI或Powershell ISE,它就会出错。问题是脚本没有更改工作目录,因此找不到Invoke-Command正在调用的文件。
$DLUpdate = New-PSSession -ComputerName msmsgex10wprd03 -Credential $DLUpdateCred -Name DLUpdate
Enter-PSSession -Session $DLUpdate
$UpdateDLPath = 'c:\users\mascott2\Desktop\Distrolist\Updates\'
Set-Location $UpdateDLPath
Invoke-Command -ScriptBlock {cmd.exe "/c updatedls.bat"}
Exit-PSSession
Remove-PSSession -Name DLUpdate
答案 0 :(得分:1)
你不应该在这样的脚本中使用Enter-PSSession
。将您想要的所有命令放入与Invoke-Command
一起使用的脚本块中,然后针对您的会话运行它:
$DLUpdate = New-PSSession -ComputerName msmsgex10wprd03 -Credential $DLUpdateCred -Name DLUpdate
Invoke-Command -Session $DLUPdate -ScriptBlock {
$UpdateDLPath = 'c:\users\mascott2\Desktop\Distrolist\Updates\'
Set-Location $UpdateDLPath
cmd.exe "/c updatedls.bat"
}
Remove-PSSession -Name DLUpdate