定数[PSCredential]::Empty
(別名[System.Management.Automation.PSCredential]::Empty
)は、タイプPSCredential
の有効オブジェクトを返しますが、username
とpassword
の両方がnullに設定されています。
ただし、これは現在のユーザーの資格情報ではありません。むしろ「資格情報なし」を意味します。これを疑問点と呼ぶ関数にロジックがあるかもしれません(つまり、$credentials -eq [PSCredential]::Empty
の場合、関数のロジックが現在のセキュリティコンテキストを使用すると言いますが、いくつかのコンテキストでは、この同じ値が他の目的のために使用されることがありますたとえば、匿名認証を使用するとします。
現在のユーザーの資格情報を求めるプロンプトを表示したり、他の方法で明示的に割り当てることはできません。そうでない場合、セキュリティリスクが発生します。
#create a credential object for demo purposes.
#Imagine that instead of this line we were saying `$credential = Get-CurrentUserCredential`
#(you have to imagine this, since no such function exists).
$credential = [PSCredential]::new('myUsername', ('superSecretPassword' | ConvertTo-SecureString -AsPlainText -Force))
#we can now see this user's password;
#someone malicious could have this script run under the current user's
#profile & have this information reported back to them.
$credential.GetNetworkCredential().Password
現在のユーザーとして何かを実行したい場合は、既に存在しています(つまり現在のユーザーです)。あなたの資格情報を取得する必要はありません。
つまり、資格情報を持っているのがうれしい場合があります。例えば現在のユーザーコンテキストを使用していないリソースにアクセスする場合、または明示的な資格情報が必要な場合このような場合は、資格情報の入力を求めるか(Get-Credential $env:username
)、リソースから読み込む必要があります(https://stackoverflow.com/a/6240319/361842を参照)。
資格情報の実際の説明は、ここにあります:http://duffney.io/AddCredentialsToPowerShellFunctions;間違いなく読む価値がある。
こんにちは、私はWindowsの認証が機能するようにあらゆる種類の方法を試しましたが、おそらくこの問題は当社独自の問題です。私たちはドメインの信頼を持つ複数のドメインを持っているので、他のシステムをナビゲートするために "母船"というドメイン信用を使うことができます。しかし、それはpowershell enter-pssessionに変換されていないようです。だから、私はそれをトリックするためにnull pscredsを使用しようとしています。 私が接続できない場合は、接続する各サーバーにドメイン固有のクレジットを使用する必要があります。それは物事を複雑にするだけです。 –
Windowsログオン資格情報に対応する「ヌル」資格情報が必要な理由はたくさんあります。誰かが私に何かをするスクリプトを与えて、スクリプトのパラメータの1つがそれを行うときに使用する資格情報であるとします。私は、管理スクリプトが実行されている資格情報を使って、非intactな管理スクリプトでこのスクリプトを利用したいかもしれません。 –
本当に分かりませんが、私は自分の答えを編集します。 – JPBlanc