Powershell: установка для PsCredentials значения $ Null для имени пользователя и $ Null для пароля - PullRequest
0 голосов
/ 09 сентября 2011

Как я могу создать объект $ Null username и $ Null password PScredentials?

Согласно этой статье, нулевой PSCredential заставляет Powershell использовать проверку подлинности Windows, которая кажется гораздо более простым способом запуска скриптов внастройка домена.К сожалению, я не могу понять, где / как он устанавливает его в Null: http://blogs.msdn.com/b/dvespa/archive/2010/02/22/how-to-use-windows-authentication-with-the-pscredential-class.aspx

Другие ресурсы: Этот ответ указал $ Null для пароля, но не разрешит $ Null username. Создать PSCredential без пароля

Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2017

Константа [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; определенно стоит прочитать.

0 голосов
/ 09 сентября 2011

Зачем вам нужен объект $ null PSCredential?

Согласно документации

-Credential <PSCredential>

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

Это означает, что если вы просто не используете этот параметр, вы будете использовать аутентификацию Windows.


Отредактировано:

Так что в Powershell, если вам нужны нулевые учетные данные, вы просто должны указать их:

тест:

Get-WmiObject Win32_Process -Credential 

Get-WmiObject Win32_Process -Credential $null

и

Get-WmiObject Win32_Process -Credential (Get-Credential)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...