我在尝试通过PowerShell安装各种程序时遇到了一些问题。这是我构建的模块组件的示例(已修剪):
Function TEST-INSTALL-Scripts
{
Param($basepath,$Arguments)
$command = @"
cmd.exe /C msiexec /package `"$basepath`" $Arguments
"@
Invoke-Expression -Command $command
}
当我尝试通过
调用它时Invoke-Command -Session $session -ScriptBlock {TEST-INSTALL-Scripts -Basepath $basepath -Arguments $args}
该命令似乎没有做任何事情所以我尝试使用PSRemote选项卡尝试获取更多细节,我使用了这个命令:
$basepath = "\\$Server\d$\Files\Install\3rd Party\SQL Server Native Client\sqlncli_x64.msi"
$Arguments = ' /quiet /passive'
TEST-INSTALL-Scripts -basepath $basepath -Arguments $Arguments
我得到一个回复,说该文件无法访问或者它不是有效文件。
我正在寻找一个能够做到这一点的人。通过这种方式,您可以了解更多信息,了解更多信息,了解更多信息,了解更多信息,了解更多信息。 如果您想知道自己是谁,那就更好地了解您的知识产权。了解更多信息。
当我RDP到机器本身时,完全相同的命令没有任何问题。
我的研究指出这是一个双跳问题,但没有将文件复制到机器上,有没有办法处理这不是一场噩梦呢?
答案 0 :(得分:0)
我能够在我通过安装路径的远程调用之前构建一个最小的解决方法。我还构建了一个函数,使管理器更容易,但我在这里放了一个示例IF语句(我构建了Get-InstallerLocal,它根据类型执行相同的复制)
If($installPath.StartsWith("\\"))
{
$DeployPath = Invoke-Command -Session $session -ScriptBlock {$env:TEMP}
$drive=(Get-Item $DeployPath).PSDrive.Name
$localpath = $DeployPath
$DeployPath = $DeployPath.Replace("$($drive):","\\$machine\$drive$")
If(!(Test-Path "$DeployPath\3rd Party\Microsoft Visual C++ 2010 Redistributable"))
{
Copy-Item -Path "$installPath\3rd Party\Microsoft Visual C++ 2010 Redistributable" -Destination "$DeployPath\3rd Party\Microsoft Visual C++ 2010 Redistributable\" -Force -Recurse
}
If($ODBCDriver){Get-InstallerLocal -installPath $installPath -deployPath $DeployPath -Type "SQL Driver"}
$installPath = $localpath
}