0

次のコードは、Invoke-Commandコマンドは、管理者としてOK動作しますが、私は管理者としてのPowerShell ISEでそれを実行しないときは、現在のユーザーとして

Invoke-Command -ScriptBlock {[IntPtr]::Size} 

Invoke-Command -ScriptBlock {[IntPtr]::Size} -ComputerName $env:COMPUTERNAME -Credential $Credential 

Invoke-Command -ScriptBlock {[IntPtr]::Size} -ComputerName $env:COMPUTERNAME -Credential $Credential -ConfigurationName Microsoft.PowerShell32 

私が得る(すなわち、私が管理者としてPS ISEを起動する)正常に動作します期待される応答

8 
8 
4 

これは、WinRMが正しく構成され、実行されていることと、$ Credentialが正しく設定されていることを示しています。私は(管理者権限の有無にかかわらず)ユーザーとしてPS ISEで同じことを実行してみたときにしかし、私はもっと何かでのScriptBlockコードを代入します

[<ComputerName>] Connecting to remote server <ComputerName> failed with the following error message : Access is denied. For more information, see the about_Remote_Troubleshooting Help topic. 
    + CategoryInfo   : OpenError: (<ComputerName>:String) [], PSRemotingTransportException 
    + FullyQualifiedErrorId : AccessDenied,PSSessionStateBroken 

第二と第三のコマンドのために、次のエラーが出ます32ビットDLLの依存関係のために32ビットモードで実行する必要があり、ユーザーが64ビットモードでコードの一部を実行し、32ビットモードで他の部分を実行する機能が重要です。

どのような考えですか?

+0

資格情報はログインと同じですか? – Jimbo

+0

@ジンボー - はい、そうですが、これがとても混乱している理由です。また、管理者モードまたはユーザーモードで同じcerdentialを使用し、Adminモードで正常に機能します。 – hsbatra

答えて

2

PSRemotingは、リモートコンピュータでエンドポイントまたはセッション構成を使用します。 3番目のコマンドにConfigurationNameパラメータが含まれているので、これは明らかです。これらのエンドポイント(Microsoft.PowerShell、Microsoft.PowerShell32など)には、誰に接続できるかを示すアクセス許可が含まれています。

リモートコンピュータ(この例ではローカルコンピュータ)にアクセスし、Get-PSSessionConfigurationを実行してPermissionプロパティを確認します。あなたは管理アクセスが必須であることをすぐに認識します。これは設計によるものです。それはいいことです!

エンドポイントを編集してユーザーを追加します(2つ)、ユーザーに必要なアクセス権を付与します(Adminまたは潜在的にリモート管理ユーザーのアクセス).3つは、 Invoke-Commandを実行したり、資格を渡したり、必要な権限を持つ独自のエンドポイントを作成したりするときに、オブジェクトになります。

+0

ありがとう@TommyMaynard - AdminまたはISEでスクリプトが実行されているかどうかにかかわらず、Admin ISEで動作するかどうかは$クレデンシャルが同じであるため、(a)ユーザが追加されたと仮定しています(現在ログインしていますとにかくユーザーの資格情報)、(b)Admin ISEで実行されているため(c)、コマンド2と3で-Credentialパラメータが使用されているため、ユーザーは必要なアクセス権限を持っています。提案4についてはどうすればよいですか? btw - Get-PSSessionConfigはAdmin ISEでのみ動作します - ユーザーモードでの実行方法または実行可能? – hsbatra

+0

提案#4は、Set-PSSessionConfiguration Microsoft.Powershell32 -ShowSecurityDescriptorUIの使用を意味しましたか?私はそれをしましたが、それの効果は永続的ではないようです!私が設定に戻ると、私の実行権限がなくなったようです。 – hsbatra

+0

永続性に関する以前のコメントは無視してください。提案#4は、Set-PSSessionConfiguration Microsoft.Powershell32 -ShowSecurityDescriptorUIを使用することを意味しました。私もそれをやって、すべてのユーザーがFullControlを持っています。 – hsbatra

関連する問題