2011-09-09 12 views
0

$ Nullユーザー名と$ NullパスワードPScredentialsオブジェクトはどのように作成できますか?

この記事によると、null PSCredentialによってPowershellはWindows認証を使用するため、ドメイン設定でスクリプトを実行する方が簡単です。生憎私は彼がNullに設定するのWHERE /方法を見つけ出すように見えるカント: http://blogs.msdn.com/b/dvespa/archive/2010/02/22/how-to-use-windows-authentication-with-the-pscredential-class.aspx

その他のリソース: をこの答えは、パスワードの$ NULLを指定したが、文句を言わない$ Nullのユーザー名を許可します。 Create PSCredential without a password

ありがとうございます。

答えて

0

なぜ$ nullのPSCredentialオブジェクトが必要ですか?

あなたはちょうどあなたがWindows認証を使用します。このパラメータを使用しない場合はドキュメント

-Credential <PSCredential> 

Specifies a user account that has permission to perform this action. The default is the current user. 

によると、それは股関節を意味します。


編集:PowerShellではそう

あなたはそれを指定する必要がnullの資格をしたい場合:

テスト:

Get-WmiObject Win32_Process -Credential 

Get-WmiObject Win32_Process -Credential $null 

Get-WmiObject Win32_Process -Credential (Get-Credential) 
+0

こんにちは、私はWindowsの認証が機能するようにあらゆる種類の方法を試しましたが、おそらくこの問題は当社独自の問題です。私たちはドメインの信頼を持つ複数のドメインを持っているので、他のシステムをナビゲートするために "母船"というドメイン信用を使うことができます。しかし、それはpowershell enter-pssessionに変換されていないようです。だから、私はそれをトリックするためにnull pscredsを使用しようとしています。 私が接続できない場合は、接続する各サーバーにドメイン固有のクレジットを使用する必要があります。それは物事を複雑にするだけです。 –

+0

Windowsログオン資格情報に対応する「ヌル」資格情報が必要な理由はたくさんあります。誰かが私に何かをするスクリプトを与えて、スクリプトのパラメータの1つがそれを行うときに使用する資格情報であるとします。私は、管理スクリプトが実行されている資格情報を使って、非intactな管理スクリプトでこのスクリプトを利用したいかもしれません。 –

+0

本当に分かりませんが、私は自分の答えを編集します。 – JPBlanc

0

定数[PSCredential]::Empty(別名[System.Management.Automation.PSCredential]::Empty)は、タイプPSCredentialの有効オブジェクトを返しますが、usernamepasswordの両方が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;間違いなく読む価値がある。

関連する問題