2010-06-10 12 views
3

J'ai une fonction dans gethell 2.0 nommé getip qui obtient l'adresse IP d'un système distant.sortie de fonction powershell à variable

function getip { 
$strComputer = "computername" 

$colItems = GWMI -cl "Win32_NetworkAdapterConfiguration" -name "root\CimV2" -comp $strComputer -filter "IpEnabled = TRUE" 



ForEach ($objItem in $colItems) 

{Write-Host $objItem.IpAddress} 

} 

Le problème que je rencontre est d'obtenir la sortie de cette fonction à une variable. Le suivant ne fonctionne pas ...

$ipaddress = (getip) 
$ipaddress = getip 
set-variable -name ipaddress -value (getip) 

toute aide avec ce problème serait grandement appréciée.

Répondre

6

Peut-être que cela fonctionnerait? (Si vous utilisez Write-Host, les données seront générées et non retournées).

function getip { 
    $strComputer = "computername" 

    $colItems = GWMI -cl "Win32_NetworkAdapterConfiguration" -name "root\CimV2" -comp $strComputer -filter "IpEnabled = TRUE" 

    ForEach ($objItem in $colItems) { 
     $objItem.IpAddress 
    } 
} 


$ipaddress = getip 

$ipaddress contiendra alors un tableau d'adresses IP de chaîne.

+2

Plus précisément, Write-Host envoie les données directement à l'hôte de la console ou stdout du processus . Write-Output ou ne pas capturer la sortie (comme dans l'exemple de Nate) enverra la sortie à "stdout" du pipeline ou de la fonction en cours. C'est à peu près le même comportement que "echo" dans un fichier batch. – JasonMArcher

2

vous pouvez allso faire

function getip { 
    $strComputer = "computername" 

    $colItems = GWMI -cl "Win32_NetworkAdapterConfiguration" -name "root\CimV2" -comp $strComputer -filter "IpEnabled = TRUE" 

    ForEach ($objItem in $colItems) { 
     write-output $objItem.IpAddress 
    } 
} 


$ipaddress = getip 

pour accéder à l'intérieur du Pipline, vous devez utiliser le retour/écriture sortie

Questions connexes