Pagina 1 di 3

[RISOLTO] Problema nell'esecuzione di uno script di PowerShell utilizzando la funzione di esecuzione di PowerShell

Pubblicato: 26 aprile 2022 - 16:36
di Albin
Buongiorno,
Abbiamo creato uno script PowerShell che consente di modificare la coda di stampa di una stampante.
ecco lo script in questione

Codice: Seleziona tutto

run(r'powershell.exe -executionpolicy bypass ./test.ps1')
test.ps1: contiene lo script PowerShell

Ecco lo script PowerShell associato

Codice: Seleziona tutto

$OldServerName = "xxxxxxxxxxxxx"
$NewServerName = "yyyyyyyyyyyy"
#Get existing network printers
$CurrentPrinters = Get-WmiObject Win32_Printer | Where-Object {$_.Network -eq "true"} | Select-Object -ExpandProperty Name

#Remove existing network printers
Get-WmiObject -Class Win32_Printer | Where-Object {$_.Network -eq 'true'} | ForEach-Object {$_.delete()}

#Map the printers from a new server.
$CurrentPrinters | ForEach-Object {
$newprintername = $_.Replace( $OldServerName, $NewServerName )
Add-Printer -ConnectionName $newprintername
}
Lo script non funziona e vorrei sapere quale potrebbe essere il problema.
La funzione di esecuzione di PowerShell consente di eseguire più righe di comando di PowerShell?
Come posso vedere gli errori associati?
GRAZIE

Re: Problema durante l'esecuzione di uno script di PowerShell utilizzando la funzione di esecuzione di PowerShell

Pubblicato: 27 aprile 2022 - 11:19
di dcardon
Ciao Albin,

puoi provare il comando

Codice: Seleziona tutto

run_powershell_from_file("filename.ps1")
Sinceramente,

Denis

Re: Problema durante l'esecuzione di uno script di PowerShell utilizzando la funzione di esecuzione di PowerShell

Pubblicato: 27 aprile 2022 - 12:13
di Albin
Ciao Denis,

ho provato il comando ma continua a non funzionare.

Cordiali saluti,

Albin

Re: Problema durante l'esecuzione di uno script di PowerShell utilizzando la funzione di esecuzione di PowerShell

Pubblicato: 27 aprile 2022 - 14:04
di dcardon
Si tratta di una quantità di informazioni piuttosto limitata...

Re: Problema durante l'esecuzione di uno script di PowerShell utilizzando la funzione di esecuzione di PowerShell

Pubblicato: 27 aprile 2022 - 14:28
di Albin
Il problema che sto riscontrando è che quando distribuisco il pacchetto contenente lo script

Codice: Seleziona tutto

run_powershell_from_file("testwapt.ps1")
Su una macchina non ho riscontrato errori a livello di console Wapt, ma non funziona.
Vorrei sapere quale potrebbe essere la causa del problema, per favore. Grazie

Sinceramente,

Albino

Re: Problema durante l'esecuzione di uno script di PowerShell utilizzando la funzione di esecuzione di PowerShell

Pubblicato: 27 aprile 2022 - 14:36
di Albin
Ho anche abilitato l'esecuzione degli script di PowerShell sul computer interessato

Re: Problema durante l'esecuzione di uno script di PowerShell utilizzando la funzione di esecuzione di PowerShell

Pubblicato: 27 aprile 2022 - 16:24
di Gaetan
Ciao,

lo script funziona anche al di fuori di WAPT?

Re: Problema durante l'esecuzione di uno script di PowerShell utilizzando la funzione di esecuzione di PowerShell

Pubblicato: 27 aprile 2022 - 16:27
di Albin
Ciao Gaetan,

sì, a parte WAPT lo script funziona perfettamente.

Saluti,
Albin

Re: Problema durante l'esecuzione di uno script di PowerShell utilizzando la funzione di esecuzione di PowerShell

Pubblicato: 27 aprile 2022 - 16:40
di Gaetan
All'interno del pacchetto, è possibile eseguire ogni comando PowerShell utilizzando `run_powershell` anziché uno script?
Questo per cercare di individuare il problema.

Re: Problema durante l'esecuzione di uno script di PowerShell utilizzando la funzione di esecuzione di PowerShell

Pubblicato: 27 aprile 2022 - 17:11
di Albin
Abbiamo appena eseguito ogni comando dello script con run_powershell
Ecco il codice:

Codice: Seleziona tutto

 run_powershell('$OldServerName = "xxxxxxxx"')
 run_powershell('$NewServerName = "yyyyyyyy"')
run_powershell('$CurrentPrinters = Get-WmiObject Win32_Printer | Where-Object {$_.Network -eq "true"} | Select-Object -ExpandProperty Name')
 run_powershell('-WmiObject -Class Win32_Printer | Where-Object {$_.Network -eq "true"} | ForEach-Object {$_.delete()}')
run_powershell('$CurrentPrinters | ForEach-Object { $newprintername = $_.Replace( $OldServerName, $NewServerName ) Add-Printer -ConnectionName $newprintername}')
Quando distribuisco il pacchetto su una macchina, si verificano errori nella console Wapt
Ecco gli errori:

Codice: Seleziona tutto

Installing:
Traceback (most recent call last):
  File "C:\Program Files (x86)\wapt\setuphelpers_windows.py", line 1080, in run_powershell
    result = run(cmd,
  File "C:\Program Files (x86)\wapt\waptutils.py", line 2091, in run
    raise CalledProcessErrorOutput(proc.returncode, cmd, ''.join(output+return_stderr))
waptutils.CalledProcessErrorOutput: Command 'powershell -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -OutputFormat text -EncodedCommand "JABQAHIAbwBnAHIAZQBzAHMAUAByAGUAZgBlAHIAZQBuAGMAZQAgAD0AIAAiAFMAaQBsAGUAbgB0AGwAeQBDAG8AbgB0AGkAbgB1AGUAIgAKAC0AVwBtAGkATwBiAGoAZQBjAHQAIAAtAEMAbABhAHMAcwAgAFcAaQBuADMAMgBfAFAAcgBpAG4AdABlAHIAIAB8ACAAVwBoAGUAcgBlAC0ATwBiAGoAZQBjAHQAIAB7ACQAXwAuAE4AZQB0AHcAbwByAGsAIAAtAGUAcQAgACIAdAByAHUAZQAiAH0AIAB8ACAARgBvAHIARQBhAGMAaAAtAE8AYgBqAGUAYwB0ACAAewAkAF8ALgBkAGUAbABlAHQAZQAoACkAfQAgACAAfAAgAEMAbwBuAHYAZQByAHQAVABvAC0ASgBzAG8AbgAgAA==" ' returned non-zero exit status 1.
Output:#< CLIXML
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04"><S S="Error">-WmiObject : Le terme «-WmiObject» n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou _x000D__x000A_</S><S S="Error">programme exécutable. Vérifiez l'orthographe du nom, ou si un chemin d'accès existe, vérifiez que le chemin d'accès _x000D__x000A_</S><S S="Error">est correct et réessayez._x000D__x000A_</S><S S="Error">Au caractère Ligne:2 : 1_x000D__x000A_</S><S S="Error">+ -WmiObject -Class Win32_Printer | Where-Object {$_.Network -eq "true" ..._x000D__x000A_</S><S S="Error">+ ~~~~~~~~~~_x000D__x000A_</S><S S="Error">    + CategoryInfo          : ObjectNotFound: (-WmiObject:String) [], CommandNotFoundException_x000D__x000A_</S><S S="Error">    + FullyQualifiedErrorId : CommandNotFoundException_x000D__x000A_</S><S S="Error"> _x000D__x000A_</S></Objs>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files (x86)\wapt\common.py", line 3938, in install_wapt
    exitstatus = setup.install()
  File "C:\windows\TEMP\waptq24g89cv\setup.py", line 15, in install
  File "C:\Program Files (x86)\wapt\setuphelpers_windows.py", line 1084, in run_powershell
    raise CalledProcessErrorOutput(e.returncode, cmd, e.output)
waptutils.CalledProcessErrorOutput: Command 'powershell -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -OutputFormat text -EncodedCommand "JABQAHIAbwBnAHIAZQBzAHMAUAByAGUAZgBlAHIAZQBuAGMAZQAgAD0AIAAiAFMAaQBsAGUAbgB0AGwAeQBDAG8AbgB0AGkAbgB1AGUAIgAKAC0AVwBtAGkATwBiAGoAZQBjAHQAIAAtAEMAbABhAHMAcwAgAFcAaQBuADMAMgBfAFAAcgBpAG4AdABlAHIAIAB8ACAAVwBoAGUAcgBlAC0ATwBiAGoAZQBjAHQAIAB7ACQAXwAuAE4AZQB0AHcAbwByAGsAIAAtAGUAcQAgACIAdAByAHUAZQAiAH0AIAB8ACAARgBvAHIARQBhAGMAaAAtAE8AYgBqAGUAYwB0ACAAewAkAF8ALgBkAGUAbABlAHQAZQAoACkAfQAgACAAfAAgAEMAbwBuAHYAZQByAHQAVABvAC0ASgBzAG8AbgAgAA==" ' returned non-zero exit status 1.
Output:#< CLIXML
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04"><S S="Error">-WmiObject : Le terme «-WmiObject» n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou _x000D__x000A_</S><S S="Error">programme exécutable. Vérifiez l'orthographe du nom, ou si un chemin d'accès existe, vérifiez que le chemin d'accès _x000D__x000A_</S><S S="Error">est correct et réessayez._x000D__x000A_</S><S S="Error">Au caractère Ligne:2 : 1_x000D__x000A_</S><S S="Error">+ -WmiObject -Class Win32_Printer | Where-Object {$_.Network -eq "true" ..._x000D__x000A_</S><S S="Error">+ ~~~~~~~~~~_x000D__x000A_</S><S S="Error">    + CategoryInfo          : ObjectNotFound: (-WmiObject:String) [], CommandNotFoundException_x000D__x000A_</S><S S="Error">    + FullyQualifiedErrorId : CommandNotFoundException_x000D__x000A_</S><S S="Error"> _x000D__x000A_</S></Objs>
CalledProcessErrorOutput: Command 'powershell -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -OutputFormat text -EncodedCommand "JABQAHIAbwBnAHIAZQBzAHMAUAByAGUAZgBlAHIAZQBuAGMAZQAgAD0AIAAiAFMAaQBsAGUAbgB0AGwAeQBDAG8AbgB0AGkAbgB1AGUAIgAKAC0AVwBtAGkATwBiAGoAZQBjAHQAIAAtAEMAbABhAHMAcwAgAFcAaQBuADMAMgBfAFAAcgBpAG4AdABlAHIAIAB8ACAAVwBoAGUAcgBlAC0ATwBiAGoAZQBjAHQAIAB7ACQAXwAuAE4AZQB0AHcAbwByAGsAIAAtAGUAcQAgACIAdAByAHUAZQAiAH0AIAB8ACAARgBvAHIARQBhAGMAaAAtAE8AYgBqAGUAYwB0ACAAewAkAF8ALgBkAGUAbABlAHQAZQAoACkAfQAgACAAfAAgAEMAbwBuAHYAZQByAHQAVABvAC0ASgBzAG8AbgAgAA==" ' returned non-zero exit status 1.
Output:#< CLIXML
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04"><S S="Error">-WmiObject : Le terme «-WmiObject» n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou _x000D__x000A_</S><S S="Error">programme exécutable. Vérifiez l'orthographe du nom, ou si un chemin d'accès existe, vérifiez que le chemin d'accès _x000D__x000A_</S><S S="Error">est correct et réessayez._x000D__x000A_</S><S S="Error">Au caractère Ligne:2 : 1_x000D__x000A_</S><S S="Error">+ -WmiObject -Class Win32_Printer | Where-Object {$_.Network -eq "true" ..._x000D__x000A_</S><S S="Error">+ ~~~~~~~~~~_x000D__x000A_</S><S S="Error">    + CategoryInfo          : ObjectNotFound: (-WmiObject:String) [], CommandNotFoundException_x000D__x000A_</S><S S="Error">    + FullyQualifiedErrorId : CommandNotFoundException_x000D__x000A_</S><S S="Error"> _x000D__x000A_</S></Objs>
Sinceramente,

Albino