Question Tester si un objet est null

Plus d'informations
il y a 17 ans 2 mois #3685 par CHOULANT Noham (MVP)
Bonjour

Comment puis je savoir si un objet est null ?
[code:1]
$tfs = get-tfs monserver

if($tfs -eq null)
{
}

[/code:1]

Cela ne marche pas :)

Merci

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 2 mois #3686 par Jacques Barathon
Tout d'abord, une coquille s'est glissée dans ton script. La constante null s'écrit avec un $ devant:

[code:1]
$tfs = get-tfs monserver

if ($tfs -eq $null)
{
}
[/code:1]
Si ça ne marche toujours pas, il est possible que get-tfs ait attribué un objet à $tfs même si son contenu est vide, ce qui est vu par PowerShell comme autre chose que $null. Tu peux alors t'en sortir de plusieurs façons:

[code:1]
# méthode 1:
if ($tfs -eq \"\"«»)

# méthode 2:
if (!$tfs.length)
[/code:1]
J'espère que ça te dépannera!

Janel<br><br>Message édité par: janel, à: 10/01/09 16:57

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 2 mois #3687 par CHOULANT Noham (MVP)
Merci

je ne savais pas qu'une variable pour le null existait

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 2 mois #3688 par Patrick Berthon
Bonsoir,

je n'appellerais pas $null une variable, je pense que tu auras du mal à l'affecter.

ça doit être une notation conventionnelle comme $true ou $false.

++, Zylwee

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 2 mois #3690 par Jacques Barathon
Au sens de PowerShell, ce sont bien des variables:

[code:1]
PS&gt; get-variable null | format-list

Value :
Description : References to the null variable always return the null value. Assignments have no effect.
Options : None
Name : null
Visibility : Public
Module :
ModuleName :
Attributes : {}
[/code:1]
En fait, une variable peut être définie comme une constante, et c'est le cas de $true et de $false notamment:

[code:1]
PS&gt; get-variable true | format-list

Name : true
Description : Boolean True
Value : True
Visibility : Public
Module :
ModuleName :
Options : Constant, AllScope
Attributes : {}
[/code:1]
L'option Constant empêche toute affectation d'une nouvelle valeur par un utilisateur. Cette option diffère de l'option ReadOnly qui empêche toute nouvelle affectation sauf si on utilise l'option -force. ReadOnly est donc plus un garde-fou, alors que Constant est bien une règle stricte.

On peut définir soi-même ses propres constantes:

[code:1]
PS&gt; new-variable -description \&quot;Ma date de naissance\&quot; -option Constant -value ([datetime]\&quot;09/23/1967\&quot;«») -name BirthDate
PS&gt; $BirthDate

samedi 23 septembre 1967 00:00:00

PS&gt; $BirthDate = \&quot;hello\&quot;
Cannot overwrite variable BirthDate because it is read-only or constant.
...

PS&gt; remove-variable BirthDate
Remove-Variable : Cannot remove variable BirthDate because it is constant or read-only. If the variable is read-only, try the operation again specifying the Force option.
...
[/code:1]
Attention: comme le montre le dernier exemple ci-dessus, et contrairement à une variable en ReadOnly, une constante ne peut pas être supprimée même avec l'option -force.

Mais pour en revenir à $null, c'est un cas particulier, car contrairement aux autres variables non modifiables il n'est pas défini comme une constante. En effet, on voit bien dans les propriétés de la variable qu'elle n'a aucune option. On peut donc supposer que son \&quot;cas\&quot; est traité explicitement par l'interpréteur de PowerShell.

Janel

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 2 mois #3692 par Patrick Berthon
Bonjour,

ah ben tiens, j'ai bien fait d'ouvrir ma gueule :) j'ai appris quelque chose !:laugh:

Merci !

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.096 secondes
Propulsé par Kunena