Zyph
Zyph

Reputation: 23

Run parameters in a Powershell script from a batch file

I'm trying to specify parameters in a powershell script, from a batch file.

The script itself looks likes this:

    Param(
    [Parameter(Mandatory=$true,HelpMessage="Application switch")]
    [string[]]$Apps,
    [ValidateRange(3,9999)]
    [int]$SwitchDelay = 30

$AppPids = @()
$Windows = Get-Process | ? { $_.MainWindowTitle -ne "" }
$Wsh = New-Object -COM Wscript.Shell

foreach ($App in $Apps) {
    foreach ($Window in $Windows) {
        if ($Window.MainWindowTitle -like $App) {
            Write-Verbose "Vindusfilter ""$App"" found hit on ""$($Window.MainWindowTitle)"" med PID ""$($Window.Id)"""
           $AppPids += $Window.Id
        }
    }
}

do {
    foreach ($ID in $AppPIDS) {
        # Hides text...
        $Wsh.AppActivate($ID) | Out-Null
        Start-Sleep -Seconds $SwitchDelay
        Write-Verbose "Changed window to PID ""$ID"""
    }
} while ($true)

And what I'm trying to do is to define in a batch file is something like:

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "C:\AppRotate.ps1" -Apps "*Chrome*", "Spotify*" -Switchdelay 5
pause

(Supposed to show error message here, need more reputation first...) Error: "... PositionalParameterNotFound.Approtate.ps1"

I'm basically new to scripting, so any ideas?

Upvotes: 2

Views: 7375

Answers (1)

Micky Balladelli
Micky Balladelli

Reputation: 9991

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File   "C:\AppRotate.ps1" -Apps "*Chrome*","Spotify*" -Switchdelay 5

The problem was the space between the first, and second variable of parameter -Apps.

Should work now.

Upvotes: 2

Related Questions