Ich habe ein PowerShell-Skript, das ein anderes Skript startet und Parameter an es übergibt. Ich tue dies mit Start-Job
, wie ich will nicht warten, bis das zweite Skript beendet ist:Start-Job Skriptblock Übergabe der Variablen
Scripta:
start-job -name EnableAutoUnlock -scriptblock {Invoke-Command -script { C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "\\Path\To\Script\EnableAutoUnlock.ps1" $VolumeDriveLetter }}
ScriptB:
[CmdletBinding()]
Param (
[Parameter(Position=0)]
[string]$drive
)
<do stuff with $drive here>
$VolumeDriveLetter
ist nur ein Laufwerksbuchstabe, der verarbeitet wird, dh "C:"
Leider funktioniert die Übergabe des Parameters per Variable nicht, obwohl $VolumeDriveLetter
den erwarteten Wert hat, aber die Eingabe funktioniert nicht korrekt.
Works:
start-job -name EnableAutoUnlock -scriptblock {Invoke-Command -script { C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "\\Path\To\Script\EnableAutoUnlock.ps1" C: }}
nicht
$VolumeDriveLetter = "C:"
start-job -name EnableAutoUnlock -scriptblock {Invoke-Command -script { C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "\\Path\To\Script\EnableAutoUnlock.ps1" $VolumeDriveLetter }}
EDIT funktionierts: ScriptB Ausgänge der übergebene Variable als leer
Was bin ich vorbei der Variable zu erhalten arbeiten?
Vielen Dank für Ihre Antwort, aber Ich habe es gerade ausprobiert und es funktioniert leider nicht (wie zuvor, der von scriptB empfangene Parameter ist einfach leer) –
Vielen Dank, ich habe die bearbeitete Antwort verwendet und es hat perfekt funktioniert –