web-dev-qa-db-ja.com

コマンドプロンプトを介してPowerShellスクリプトを実行する-win7

PowerShellスクリプトを自動的に実行するのに問題があります。スクリプトを呼び出すか実行するたびに、「R」を入力して実行するように要求するセキュリティプロンプトが表示されます。実行ポリシーを「無制限」に設定し、その設定を確認しました。誰か提案がありますか?

セキュリティ警告:信頼できるスクリプトのみを実行してください。インターネットからのスクリプトは便利ですが、スクリプトはコンピュータに害を及ぼす可能性があります。 C:\ test\win7.ps1を実行しますか?

私は現在、cmdのpowershell.exe呼び出しを介してpowershellスクリプトを実行しています。また、これをPowerShellから直接実行しようとすると、同じエラーメッセージが表示されます。

powershell -command C:\nst\win7.ps1 "var1" "var2" "var3"

また、cmdを介して次のコマンドを実行してみました。

powershell -executionpolicy unrestricted -command C:\nst\win7.ps1 "var1" "var2" "var3"

Win7スクリプト:

$domain = $args[0]
$pwd = $args[2]
$usr = $args[1]
$password = ConvertTo-SecureString $pwd -AsPlainText -Force
$username = "$domain\$usr"
$credential = New-Object System.Management.Automation.PSCredential($username,$password)
Add-Computer -DomainName $domain -Credential $credential

ありとあらゆる助けをいただければ幸いです

1
Mpit52

問題は、実行しようとしているファイルに、インターネットからのものであることを示す 代替ファイルストリーム があることです。メッセージを消すには、ストリームを削除するだけです。 Sysinternals には streams.exe という無料のユーティリティがあり、これを簡単に実行できます。 (メッセージに示されているように、ファイルパブリックインターネットから来ているので、実行するときは注意して、それが何をするのかを完全に理解していることを確認する必要があります。)

Streams.exeを入手すると、コマンドは次のようになります。

streams.exe -d C:\nst\win7.ps1

コマンドラインから代替ストリームを表示するのは難しい場合がありますが、notepad ++で開くことができます。私のシステムでは、コマンドは次のようになります。

"c:\Program Files (x86)\Notepad++\notepad++.exe" "e:\temp\test.ps1:Zone.Identifier:$DATA"

また、興味があれば、すべての悲しみを与えるストリームには次のものが含まれています。

[ZoneTransfer]
ZoneId=3

定義されたZoneIdは次のとおりです。

Local machine = 0
Intranet      = 1
Trusted       = 2
Internet      = 3
Restricted    = 4
4
BillP3rd