在下面的脚本中,我调用了一个批处理文件来中断某些dbs之间的镜像。该批处理文件有一个用户提示符来启动脚本,但PS脚本正好赶上它。当我直接从powershell控制台调用批处理文件时,它工作正常。我怎样才能避免脚本移过调用命令块直到批处理文件完成?批处理文件有错误,从Powershell脚本调用时不允许批处理文件完成
$session = New-PSSession -computerName xssqlk02 -credential $cred
Invoke-Command -Session $session -Scriptblock {c:\MSSQL\DBMaintenance\Mirroring\SERVER_Remove_Mirroring.bat xssqlk02 ossqlk02}
Remove-PSSession $session
编辑:我修剪了我有问题的部分代码。当它从ps脚本运行时,我只注意到(这是一个漫长的一天......)我收到以下错误,并在那时通过用户提示符运行。
PS C:\ Users \ dans> C:\ Tools \ Scripts \ test5.ps1 子目录或文件c:\ MSSQL \ DBMaintenance \ Mirroring \ Common已存在。 + CategoryInfo:NotSpecified:(A子目录...已经exists.:String)[],的RemoteException + FullyQualifiedErrorId:NativeCommandError
无效驱动器规格 删除镜像xssqlk02和ossqlk02之间RCM数据库:继续? y/n 0复制的文件
以下是当我直接从本地计算机上的PS控制台运行批处理文件时的输出结果。
PS:C:\ Documents and Settings \ DanS> c:\ MSSQL \ DBMaintenance \ Mirroring \ SERVER_Remove_Mirroring.bat xssqlk02 ossqlk02 删除xssqlk02和ossqlk02之间的RCM数据库的镜像:继续? y/n y
子目录或文件c:\ MSSQL \ DBMaintenance \ Mirroring \ Common已存在。
\ OPFLSK02 \ SQLBackupsForTape \ DBMaintenance \镜像\共同\ DB_Create_Snapshots.bat \ OPFLSK02 \ SQLBackupsForTape \ DBMaintenance \镜像\共同\ DB_Force_Mirror_To_Principal.bat ....... 18文件(多个)复制
发生错误的原因是批处理文件没有检查目录是否已经存在。我如何处理这个来自invoke命令块的脚本以允许脚本继续?目前我无法更改批处理文件本身。
与bat文件的所有者合作后,我们解决了多个问题,最终我们能够从远程上下文中引发双跳问题。然后,我可以参与George的代码:Start-Process -FilePath“C:\ MSSQL \ DBMaintenance \ Mirroring \ SERVER_Remove_Mirroring.bat”-ArgumentList“xssqlk02”,“ossqlk02” - 等待并利用它。 – 2010-10-13 23:34:51