Extracting a specific value from command-line output using powershell
        Posted  
        
            by 
                Andrew Shepherd
            
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Andrew Shepherd
        
        
        
        Published on 2011-01-14T01:48:27Z
        Indexed on 
            2011/01/14
            1:53 UTC
        
        
        Read the original article
        Hit count: 700
        
svn
|powershell
I've just started learning PowerShell this morning, and I'm grappling with the basics.
Here's the problem: I want to query subversion for the revision number of a repository, and then create a new directory with this revision number.
The command svn_info outputs a number of label\value pairs, delimited by colons. For example
Path: c#
URL: file:///%5Copdy-doo/Archive%20(H)/Development/CodeRepositories/datmedia/Development/c%23
Repository UUID: b1d03fca-1949-a747-a1a0-046c2429f46a
Revision: 58
Last Changed Rev: 58
Last Changed Date: 2011-01-12 11:36:12 +1000 (Wed, 12 Jan 2011)
Here is my current code which solves the problem. Is there a way to do this with less code? I'm thinking that with the use of piping you could do this with one or two lines. I certainly shouldn't have to use a temporary file.
$RepositoryRoot = "file:///%5Cdat-ftp/Archive%20(H)/Development/CodeRepositories/datmedia"
$BuildBase="/Development/c%23"
$RepositoryPath=$RepositoryRoot + $BuildBase
# Outputing the info into a file
svn info $RepositoryPath | Out-File -FilePath svn_info.txt
$regex = [regex] '^Revision: (\d{1,4})'
foreach($info_line in get-content "svn_info.txt")
    {
        $match = $regex.Match($info_line);
        if($match.Success)
        {
            $revisionNumber = $match.Groups[1];
            break;
        }
    }
"Revision number = " + $revisionNumber;
© Stack Overflow or respective owner