Cara melewati argumen untuk PowerShell script?

Ada's PowerShell script bernama itunesForward.ps1 yang membuat iTunes maju cepat 30 detik:

$iTunes = New-Object -ComObject iTunes.Application

if ($iTunes.playerstate -eq 1)
{
  $iTunes.PlayerPosition = $iTunes.PlayerPosition + 30
}

Hal ini dilakukan dengan prompt baris perintah:

powershell.exe itunesForward.ps1

Apakah mungkin untuk melewati argumen dari command line dan telah diterapkan di script bukan hardcoded 30 detik nilai?

Larutan

Diuji bekerja sebagai:

param([Int32]$step=30) #Must be the first statement in your script

$iTunes = New-Object -ComObject iTunes.Application

if ($iTunes.playerstate -eq 1)
{
  $iTunes.PlayerPosition = $iTunes.PlayerPosition + $step
}

Panggilan itu dengan

powershell.exe -file itunesForward.ps1 -step 15
Komentar (13)

Anda juga dapat menggunakan $args variabel (yang's seperti posisi parameter):

$step=$args[0]

$iTunes = New-Object -ComObject iTunes.Application

if ($iTunes.playerstate -eq 1)
{
  $iTunes.PlayerPosition = $iTunes.PlayerPosition + $step
}

maka dapat panggilan seperti:

powershell.exe -file itunersforward.ps1 15
Komentar (4)

mari Powershell menganalisis dan menentukan jenis data
Secara internal menggunakan 'Varian' untuk ini...
dan umumnya melakukan pekerjaan yang baik...

param( $x )
$iTunes = New-Object -ComObject iTunes.Application
if ( $iTunes.playerstate -eq 1 ) 
    { $iTunes.PlayerPosition = $iTunes.PlayerPosition + $x }

atau jika anda perlu melewati beberapa parameter

param( $x1, $x2 )
$iTunes = New-Object -ComObject iTunes.Application
if ( $iTunes.playerstate -eq 1 ) 
    { 
    $iTunes.PlayerPosition = $iTunes.PlayerPosition + $x1 
    $iTunes.  = $x2
    }
Komentar (0)

*Call Script dari bath file (.bat) atau CMD**

Powershell Inti

pwsh.exe -NoLogo -ExecutionPolicy Bypass -Command "./Script.ps1 -Param1 Hello -Param2 World"

pwsh.exe -NoLogo -ExecutionPolicy Bypass -Command "path-to-script/Script.ps1 -Param1 Hello -Param2 World"

Powershell

powershell.exe -NoLogo -ExecutionPolicy Bypass -Command "./Script.ps1 -Param1 Hello -Param2 World"

powershell.exe -NoLogo -ExecutionPolicy Bypass -Command "path-to-script/Script.ps1 -Param1 Hello -Param2 World"

**Panggilan dari powershell**

Powershell Core atau Windows Powershell

& path-to-script/Script.ps1 -Param1 Hello -Param2 World
& ./Script.ps1 -Param1 Hello -Param2 World

Naskah.ps1 - Kode Script

param(
    [Parameter(Mandatory=$True, Position=0, ValueFromPipeline=$false)]
    [System.String]
    $Param1,

    [Parameter(Mandatory=$True, Position=1, ValueFromPipeline=$false)]
    [System.String]
    $Param2
)

Write-Host $Param1
Write-Host $Param2
Komentar (0)

Membuat script powershell dengan kode berikut dalam file.

param([string]$path)
Get-ChildItem $path | Where-Object {$_.LinkType -eq 'SymbolicLink'} | select name, target

Ini menciptakan skrip dengan jalan parameter. Ini akan menampilkan semua symboliclinks dalam jalan yang disediakan serta ditentukan target dari simbolik link.

Komentar (0)

Anda juga dapat mendefinisikan variabel secara langsung pada baris perintah PowerShell dan kemudian mengeksekusi script. Variabel akan didefinisikan di sana, terlalu. Ini membantu saya dalam kasus di mana saya tidak't memodifikasi menandatangani naskah.

Contoh: PS C:\temp> $stepsize = 30 PS C:\temp> .\itunesForward.ps1

dengan iTunesForward.ps1 yang

`` $iTunes = Baru-Objek -ComObject iTunes.Aplikasi

if ($iTunes.playerstate -eq 1) { $iTunes.PlayerPosition = $iTunes.PlayerPosition + $stepsize } ``

Komentar (0)