1

Start-Process /Start-Jobコマンドレットを-Credential$credで使用すると、どこにも到達しません

問題

展開(無人モード)でサービスアカウントを使用しています。以前は、ローカル管理者グループに追加されていました。このユーザーを管理者グループから削除し、このユーザーにフォルダーのアクセス許可を明示的に割り当てることで、潜在的な被害を減らしたいと考えています。

  • 偶然に手を差し伸べている何かを実行するよりも、許可エラーが発生します。削除-アイテム"$notdefined \ *"

ただし、この同じPowerShellスクリプトでは、次のようなものを実行するために昇格できるようにしたいと思います。

  • sc.exe
  • 管理者ユーザーを必要とするアプリプールの再起動。

私の失敗した試みの1つ

$job = Start-Job -ScriptBlock { 

param(
    [string]$myWebAppId
)

Import-Module WebAdministration

Write-Host "Will get the application pool of: IIS:\Sites\$myWebAppId and try to restart"
$appPoolName = Get-ItemProperty "IIS:\Sites\$myWebAppId" ApplicationPool 
Restart-WebAppPool "$($appPoolName.applicationPool)" 
Write-Host "restart of apppool succeeded."

} -Credential $cred -ArgumentList @("appname")

Write-Host "started completed"

Wait-Job $job

Write-Host "wait completed"

Receive-Job $job -Verbose

Write-Host "receive completed"
4

3 に答える 3

1

WinRMのクイック構成を使用してWinRMを有効にすることになりました

その後、 Invoke-Command を使用できました

    $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password

Invoke-Command {
    param(
        [string]$WebAppName 
    )
     #elevated command here

} -comp $computerName -cred $cred  -ArgumentList @("$myWebAppId")
于 2012-08-14T19:27:46.197 に答える
1

こんにちは、これはあなたにとってうまくいくかもしれない例かもしれません。

$global:credentials = new-object -typename System.Management.Automation.PSCredential 


$job = Start-Job -ScriptBlock {Get-Service} -Credential $credentials

Wait-Job $job

Receive-Job $job
于 2012-08-14T10:26:55.747 に答える
0

PowerShell 2.0でこれを行うための迅速で簡単な方法はありませんが、バージョン3.0(現在、RCで、Windows8RTWが明日MSDN/Technetに表示されることを考えると、ほとんどの場合RTW)は、カスタムIDを使用してリモートエンドポイントを構成するという概念をサポートしています。 。これはRegister-PSSessionConfiguration、コマンドを実行するコンピューター(ローカルコンピューターの場合もあります)のコマンドレットを使用して実行されます。次に、を使用する場合Invoke-Commandは、パラメータを使用してセッションを提供し-Sessionます。セッションはNew-PSSession、コンピューターと構成名(カスタムIDに関連付けられている)を指定できるコマンドレットを使用して作成されます。

泥のように澄んでいますか?

于 2012-08-14T21:43:18.267 に答える