J'ai écrit un script pour pousser .EXE vers plusieurs serveurs distants à travers les domaines et les installer. Lorsque j'exécute le script, il tente d'exécuter le programme d'installation sur ma machine locale. Toute révision et correction à mon script serait d'une grande aide. MerciPowershell Remoting ne fonctionne pas comme prévu
$uname='domain\username'
$pwd='Password' | ConvertTo-SecureString -Force -AsPlainText
try {
$targets = Get-Content -Path D:\scripts\serverlist.txt
$source = C:\Downloads\installer.exe
$creds=New-object System.Management.Automation.PSCredential ($uname, $pwd)
[ScriptBlock] $code = {
if(!(Test-Path "C:\Temp"))
{
New-Item -Path "C:\Temp" -ItemType Directory
}
}
function Installer([string] $file, [String] $argslist)
{
$ErrorActionPreference="Stop"
try
{
$exec = Start-Process -FilePath $file -ArgumentList $argslist -Wait -PassThru
Write-Host "Exit code for installation of $file is $($exec.ExitCode)"
return $exec.ExitCode
}
catch
{
throw
}
}
foreach($target in $targets){
$name = GC env:computername
$current = New-PSSession -ComputerName $name -Credential $creds -ErrorAction SilentlyContinue
Invoke-Command -Session $current -ScriptBlock $code
Robocopy $source E:\Temp
Installer "\\$name\$source" "/q /norestart"
$current | Remove-PSSession
} }
catch
{
Write-Host -f red "An error has occurred!"
Write-Host "$($error[0].exception)"
$error.clear()
exit $LASTEXITCODE
}
Start-Process s'exécutera toujours sur la machine locale. Vous pourriez vouloir Invoke-Command –
Merci Sami. Mais la fonction est appelée depuis le serveur distant. Donc, Start-Process le déclencherait localement, n'est-ce pas? Mais néanmoins, j'ai essayé de le remplacer par Invoke-Command mais ne fonctionne toujours pas. Je reçois ci-dessous erreur: – Karthik
Vous créez une session, mais vous ne saisissez pas ou appeler la fonction là-bas, il est donc appelé localement –