2

以下の行は、Powershellプロンプトからは正常に機能しますが、スケジュールされたタスクからは失敗します。

$pass = gc C:\secrets\shhh.txt | convertTo-secureString
$Cred = new-object -typeName System.management.automation.psCredential -argumentlist "domain\domainUser",$pass

$path = "\\server\share\folder"
$j = start-job {gci -path $args[0]} -cred $Cred -argumentList $path | wait-job | receive-job

$body = $j | out-string
$error | out-file C:\temp\err.txt
send-mailMessage -to me@domain.tld -from server@domain.tld -subject halp -smtpserver mailserver.domain.tld -body $body

c:\ temp \ err.txtで、Windows2008R2のスケジュールされたタスクはブレッドクラムを残します。

[localhost] The background process exited abnormally.
    + CategoryInfo          : OpenError: (localhost:String) [], PSRemotingTransportException
    + FullyQualifiedErrorId : 2101,PSSessionStateBroken

...これにより、このMicrosoftバグレポートが表示されます。レポートには、ローカルホストのループバックリモーティングの回避策が記載されていますが、これはちょっと汚いように聞こえます。私はそこに行くべきですか?

より良い解決策はありますか?たぶん、* sessionコマンドレットまたはinvoke-commandの1つを使用しますか?スケジュールされたタスクのStart in値は設定されていますが、バックグラウンドプロセスが何らかの悪い方法で変数を使用している可能性があります

–version 2構文を使用して、または構文を使用してpowershell.exeを呼び出すことはまだできません-command "& {bigKlugeyScriptblock}"

編集:タスクを実行するための新しいドメインアカウントの作成を回避しようとしています。そのアカウントにはローカルホストに対する権限がないため、タスクをdomainUserfromとして実行することはできません。$cred

4

1 に答える 1

2

いくつかの可能な回避策として、次のことはどうですか。

  1. スケジュールされたタスク自体に代替の資格情報を配置する
  2. runasコマンドを使用して、別のユーザーとしてpowershell.exeを起動します
  3. net use /userパラメーターを使用してネットワークパスへのアクセスを認証する

    [/USER:[dotted domain name\]username]
    [/USER:[username@dotted domain name] 
    
于 2013-03-14T22:48:15.457 に答える