小编bwe*_*rks的帖子

tf.exe和tfpt.exe如何根据执行目录建立与TFS实例的连接?

我正在使用TFS对象模型在命令行上做一些工作,我想重现在tf.exe和tfpt.exe中看到的工作空间检测行为,而不会因为我自己的特定实现而引入工件.目前,我的脚本需要的信息比tf.exe需要的更多 - 我的大量参数只是为了实例化连接.

具体来说,我必须要求用户显式传入服务器Uri(tfsUriString)和集合名称(tfsCollectionName),但这似乎是不必要和烦人的,因为tf.exe能够做到这一点.

    Uri tfsUri = new Uri(tfsUriString);
    TfsConfigurationServer configurationServer = TfsConfigurationServerFactory.GetConfigurationServer(tfsUri);
    ReadOnlyCollection<CatalogNode> collectionNodes = configurationServer.CatalogNode.QueryChildren( new[] { CatalogResourceTypes.ProjectCollection }, false, CatalogQueryOptions.None);
    CatalogNode collectionNode = collectionNodes.Where(node => node.Resource.DisplayName == tfsCollectionName).SingleOrDefault();
    Guid collectionId = new Guid(collectionNode.Resource.Properties["InstanceId"]);
    TfsTeamProjectCollection teamProjectCollection = configurationServer.GetTeamProjectCollection(collectionId);
    var vcServer = teamProjectCollection.GetService<VersionControlServer>();
Run Code Online (Sandbox Code Playgroud)

可以使用哪些类和方法以与tf.exe相同的方式执行此检测?

workspace tfs sdk command-line tfs2010

4
推荐指数
1
解决办法
912
查看次数

C#:自动删除不必要的程序集引用?

我正在使用一个包含大量项目的大型代码库,每个项目都有少量(在某些情况下,巨大的)引用其他项目.随着时间的推移,在这个代码库上已经进行了大量的重构,因此有些项目被一些项目引用只是因为它们曾经包含一个已移到别处的类; 诸如此类的事情.

ReSharper有一个集成到IDE中的工具,允许用户查找实际使用给定项目的给定引用的代码,但是为了将其转换为解决方案,我们需要让人员右键单击每个项目中的每个引用然后实际检查没有使用然后删除它们,这不仅是一个漫长的过程,而且还与酷刑接壤.

我希望能够自动执行此过程,以便我们只运行它并删除不必要的引用; 然后我们可以将它整合到某种常规过程中,以便捕获被忽视的错误.

我想到的两个选项是A)如果可能的话,使用Powershell自动化ReSharper,或者B)也许Visual Studio 2010架构依赖关系图可以处理这个问题,如果我很幸运的话,也许可以用脚本方式处理.

我的问题是这些:

  • ReSharper可以为这样的东西编写脚本吗?
  • VS2010架构是否可以以任何批量/自动方式删除未使用的引用?

resharper powershell automation assembly-references

3
推荐指数
1
解决办法
1531
查看次数

如何在Windows 8.1中安装ActiveDirectory Powershell模块?

我正在尝试在运行Windows 8.1的Surface Pro上使用ActiveDirectory模块,但是在"程序和功能"下 打开或关闭Windows功能,似乎RSAT不再列在那里.我搜索了一下,不仅是对这个主题的搜索充满了Windows 7的点击,但是甚至关于8.1中的ActiveDirectory模块的technet文章在调查安装时链接到Server 2012.

谁动了我的奶酪?

powershell active-directory windows-8.1

3
推荐指数
1
解决办法
4085
查看次数

有什么方法可以定义无参数的Powershell参数集?

我为库模块编写了一些相当复杂的函数,可以使用许多不同的方法来调用它。但是,实际上可以将它们全部默认设置,但是当我尝试不带参数调用函数时,由于无法确定参数集,因此调用失败。

我想定义一个不包含任何参数的参数集,以使没有参数的调用成功。由于ParameterSetName是Parameter属性的属性,因此很难做到这一点,并且不可能一无所获。

我尝试了放在param块上的CmdletBinding属性的DefaultParameterSet属性,但是似乎没有任何效果。似乎那里定义的参数集名称实际上必须存在,以便Powershell默认使用它。

目前,我对该用例的最佳近似方法是将其中一个参数集定义为没有强制性参数,但是当输入空字符串或null时,这些参数将失败,我希望情况并非如此。

这可能吗?

powershell parameter-sets

3
推荐指数
1
解决办法
502
查看次数

是否可以在powershell中向集合添加属性?

我有一个非常大的对象数组,由正常的Get-ChildItem获得,我需要能够通过各种不同的属性对它们进行索引.我已经制作了一组哈希表,它们通过这些属性对它们进行索引,但是现在它只是一堆必须单独构建和管理的集合.有一次,我想到将哈希表添加到基本集合中作为"ByPath""ByGuid"等属性会很好.构建它的代码只会将我已经拥有的各个语句组合在一起:

$items = Get-ChildItem -recurse blahblah
$items | Add-Member -membertype NoteProperty -name "ByGuid" -value (Get-ItemsByGuid)
$items | Add-Member -memberType NoteProperty -name "ByPath" -value (Get-ItemsByPath)
$items
Run Code Online (Sandbox Code Playgroud)

不幸的是,虽然这不会执行,但它没有做任何事情.这些属性存在并且可以通过Get-Member查看,但是在查询时它们始终为null,并在之后设置时抛出.

Property 'ByGuid' cannot be found on this object; make sure it exists and is settable. At line:1 char:14 + $items. <<<< ByGuid = $itemsByGuid + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : PropertyAssignmentException

谎言!

根据我的目的,有什么理由不应该这样做吗?或者有什么理由让我得到奇怪的混合信息?

collections powershell properties

2
推荐指数
1
解决办法
4107
查看次数

命令行中TFS分支之间的未合并变更集列表?

这个问题已经被提出,但回答的方式不符合我的需要,同时不排除我正在寻找的解决方案.我不知道正确的行动路线是什么,所以我再次要求,同时链接到其他线程:TFS:还没有被合并名单的变更

我想获得一些尚未从我的主分支合并到开发分支的变更集.通过UI是可能的,但是该列表中有一些真正令人窒息的条目,并且截取屏幕不仅非常费力,而且由于在不可调整大小的窗口中截断了变更集信息,因此也不完整.

先前的线程是通过引用可用的API方法来回答的,但我想知道更多关于powershell的问题,因为这是我想要处理这些信息的环境.有没有办法使用我错过的tf.exe,这将允许我这样做?我对Power Tools Cmdlet的了解相当不错,而且我很确定他们没有任何东西可以做到这一点,但我确实考虑过了.

powershell merge command-line changeset tfs2010

2
推荐指数
1
解决办法
2153
查看次数

Powershell:如何从非常大的文件中流式传输、分页文本?

我有一些需要查看的巨大日志文件。我不想尝试在编辑器中打开它们,我希望能够以分页方式滚动浏览它们。似乎 powershell 中有更多的别名,但管道到它没有任何作用,而且 get-help 只会产生“更多”。

这对我来说似乎是一个完全愚蠢的问题,但我还没有弄清楚——我怎样才能得到类似于 unix more 命令的东西?

streaming powershell pagination logfiles large-files

2
推荐指数
1
解决办法
732
查看次数

从BizTalk写入事件日志

当我尝试用类似于EventLog.WriteEntry("MyEsb", "Msg");表达式的形状执行编排时,我得到异常The source was not found, but some or all event logs could not be searched. To create the source, you need permission to read all event logs to make sure that the new source name is unique. Inaccessible logs: Security.为什么?如果这有任何意义,我正在运行Win 7 64bit.

biztalk event-log

2
推荐指数
1
解决办法
6861
查看次数

Powershell:C#-style函数重载参数集?

在C#中,函数重载历史上似乎如下所示,其中每个重载在更简单的签名之上添加了一些参数:

public void Initialize(int version);
public void Initialize(int version, string workspaceName);
public void Initialize(int version, string workspaceName, Path workspaceRoot, bool force);
Run Code Online (Sandbox Code Playgroud)

在Powershell中,诸如此类的过载是不可能的; 但是,通过System.Management.Automation.ParameterAttribute的ParameterSetName属性提供了函数重载的一些近似值.这允许我们将参数声明为某些参数集的成员,这允许我们有效地为我们的函数定义单独的签名.在大多数ParameterSetName示例中找到的简单情况是这样的:

function test-param 
{ 
[CmdletBinding(DefaultParametersetName="p2")] 
param( 
[Parameter(ParameterSetName="p1",Position=0)] 
[String] 
$d, 

[Parameter(ParameterSetName="p2", Position=0)] 
[String]$i 
) 
    switch ($PsCmdlet.ParameterSetName) 
{ 
    "p1"  { Write-Host ([DateTime]$d); break} 
    "p2"  { Write-Host ([INT]$i); break} 
    } 
}
Run Code Online (Sandbox Code Playgroud)

获取此函数的帮助会产生以下结果:

PS D:\.ws> get-help test-param
test-param [[-i] <String>] [-Verbose] [-Debug] [-ErrorAction <ActionPreference>] [-WarningAction <ActionPreference>] [-ErrorVariable <String>] [-WarningVariable <String>] [-OutVariable <String>] [-OutBuffer <Int32>]
test-param [[-d] <String>] [-Verbose] [-Debug] [-ErrorAction …
Run Code Online (Sandbox Code Playgroud)

parameters powershell overloading optional-parameters

2
推荐指数
1
解决办法
4637
查看次数

PowerShell 函数中的 ParameterSetName 检测与 ValueFromPipeline 输入对象类型匹配吗?

我在我编写的自定义函数中看到了一些奇怪的行为,因此我编写了一些具有不同特征的快速测试函数来展示这些行为。当参数集足够相似以至于唯一的区别因素是通过管道接收的对象的类型时,就会出现问题。

首先,我创建了一个简单的类型,它只与字符串不同。

Add-Type @"
public class TestType {
   public string Prop1;
}
"@
Run Code Online (Sandbox Code Playgroud)

接下来,我创建了一个测试函数并使用字符串和 TestType 输入运行它。

function Test-ParameterSets1
{
    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true, ValueFromPipeline=$true, ParameterSetName="Str")] [string] $StringInput,
        [Parameter(Mandatory=$true, ValueFromPipeline=$true, ParameterSetName="Test")] [TestType] $TestInput
    )
    begin {
        $result = New-Object Object | Select-Object –Property @{n='FunctionName';e={$PSCmdlet.MyInvocation.InvocationName}},@{n='ParameterSetName';e={$PSCmdlet.ParameterSetName}}
    }
    process {
        $result | Add-Member -MemberType NoteProperty -Name StringInput -Value $StringInput -PassThru | Add-Member -MemberType NoteProperty -Name TestInput -Value $TestInput
    }
    end {
        $result
    }
}
'string' | Test-ParameterSets1
New-Object TestType | Test-ParameterSets1


FunctionName        ParameterSetName   StringInput …
Run Code Online (Sandbox Code Playgroud)

powershell parameter-sets

2
推荐指数
1
解决办法
3066
查看次数