241

このスクリプトを PowerShell で実行しようとしています。以下のスクリプトをps.ps1デスクトップに保存しました。

$query = "SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 2"
Register-WMIEvent -Query $query -Action { invoke-item "C:\Program Files\abc.exe"}

この PowerShell スクリプトを実行するバッチ スクリプトを作成しました

@echo off
Powershell.exe set-executionpolicy remotesigned -File  C:\Users\SE\Desktop\ps.ps1
pause

しかし、私はこのエラーが発生しています:

ここに画像の説明を入力してください

4

9 に答える 9

26

完全修飾パスなしで現在のディレクトリから実行する場合は、次を使用できます。

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& './ps.ps1'"
于 2016-05-02T19:26:54.460 に答える
20

管理者として PowerShell を呼び出すバッチ ファイルを実行する場合は、次のように実行することをお勧めします。

powershell.exe -ExecutionPolicy Bypass -Command "Path\xxx.ps1"

使用する方が良いBypassです...

于 2014-03-29T19:38:20.427 に答える
7

小さなサンプル test.cmd

<# :
  @echo off
    powershell /nologo /noprofile /command ^
         "&{[ScriptBlock]::Create((cat """%~f0""") -join [Char[]]10).Invoke(@(&{$args}%*))}"
  exit /b
#>
Write-Host Hello, $args[0] -fo Green
#You programm...
于 2019-08-20T11:07:26.190 に答える
3

いくつかのスクリプトを実行したい場合は、 を使用Set-executionpolicy -ExecutionPolicy UnrestrictedしてからリセットできますSet-executionpolicy -ExecutionPolicy Default

実行ポリシーは、実行を開始したとき (またはそのように思われるとき) にのみチェックされるため、バックグラウンドでジョブを実行してすぐに実行ポリシーをリセットできることに注意してください。

# Check current setting
Get-ExecutionPolicy

# Disable policy
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
# Choose [Y]es

Start-Job { cd c:\working\directory\with\script\ ; ./ping_batch.ps1 example.com | tee ping__example.com.txt }
Start-Job { cd c:\working\directory\with\script\ ; ./ping_batch.ps1 google.com  | tee ping__google.com.txt  }

# Can be run immediately
Set-ExecutionPolicy -ExecutionPolicy Default
# [Y]es
于 2016-03-03T16:47:47.147 に答える