2015-06-23 2 views
4

Я получаю различную для той же команды powershell, и я не уверен, почему.Выход PowerShell New-Item несовместим - Почему?

Когда это работает внутри функции, я получаю выход 1, и когда я бегу сам по себе я получаю output2

New-Item -Path C:\DEPL\nichdwww\deployments\Full\bob3 -type directory 

Выход 1

PSPath   : Microsoft.PowerShell.Core\FileSystem::C:\DEPL\nichdwww\deployments\Full\bob3 
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\DEPL\nichdwww\deployments\Full 
PSChildName  : bob3 
PSDrive   : C 
PSProvider  : Microsoft.PowerShell.Core\FileSystem 
PSIsContainer  : True 
Name    : bob3 
Parent   : Full 
Exists   : True 
Root    : C:\ 
FullName   : C:\DEPL\nichdwww\deployments\Full\bob3 
Extension   : 
CreationTime  : 6/23/2015 2:14:39 PM 
CreationTimeUtc : 6/23/2015 6:14:39 PM 
LastAccessTime : 6/23/2015 2:14:39 PM 
LastAccessTimeUtc : 6/23/2015 6:14:39 PM 
LastWriteTime  : 6/23/2015 2:14:39 PM 
LastWriteTimeUtc : 6/23/2015 6:14:39 PM 
Attributes  : Directory 
BaseName   : bob3 
Mode    : d---- 

Выход 2

Directory: C:\DEPL\nichdwww\deployments\Full 


Mode    LastWriteTime  Length Name                               
----    -------------  ------ ----                               
d----   6/23/2015 2:45 PM   bob3 

функция

function ArchiveFullSolution($wsp) 
{ 
    $ParentPath=Split-Path $wsp.DirectoryName -Parent 
    $FullPath=$ParentPath+'\Full\' 
    $Fullfilename=$FullPath+$wsp.Name 
    #$Fullfilename 

    #does file exist  
    if(Test-Path -path $Fullfilename) 
    { 
     #Make Full Archive folder 
     #$script:Makefolder 
     if($script:Makefolder) 
     { 
      #does folder exists 
      $DayFormat=Get-Date -f yyyy-MM-dd 
      if(Test-Path -path $FullPath$DayFormat) 
      { 
       write-host "folder $FullPath$DayFormat exists" 
       $DayTimeFormat=Get-Date -f yyyy-MM-dd-hh-mm 
       write-host "Creating folder $FullPath$DayTimeFormat" 
       New-Item -Path $FullPath$DayTimeFormat -type directory 

       $script:Makefolder=$false 
       $script:FullArchivePath=$FullPath+$DayTimeFormat 
      } 
      else 
      { 
       write-host "no folder exists" 
       write-host "Creating folder $FullPath$DayFormat" 
       New-Item -Path $FullPath$DayFormat -type directory 

       $script:Makefolder=$false 
       $script:FullArchivePath=$FullPath+$DayFormat 
      } 
     } 

     #move file into archive 
     Move-Item $Fullfilename $script:FullArchivePath 
     write-host "Moving file $($Fullfilename) to $FullArchivePath"   
    } 
    #copy file into full 
    Copy-Item $wsp.FullName $FullPath 
    write-host "Copying file $($wsp.FullName) to $FullPath" 
} 
+1

У меня есть второй вывод для обоих (то есть: если я просто запускаю cmd или если я вызываю функцию с CMD внутри). – TroyAndAbed

+1

Опубликовать свою функцию. –

+2

Похож на 'Format-List *' для меня. PowerShell отображает объект определенным образом ... если вы не переопределите его. – Matt

ответ

3

Проверьте свою функцию. Скорее всего, он выводит другой объект первым. После того, как движок PowerShell F & O (форматирование и вывод) видит один тип объекта, он хочет отформатировать все после этого, как этот тип. Если он увидит другой тип объекта, он вернется к использованию Format-List IIRC.

Смежные вопросы