标签: cmdlets

PowerShell模块 - 每个cmdlet的单独文件

我已经有一段时间了.我打算为我的项目创建新的PowerShell模块.目标是将多个自定义cmdlet打包到独立单元中,我可以通过我们的Nexus存储库(或通过其他任何方式)将其部署到其他计算机.

问题:我看到的每个地方,都看到教程将所有PowerShell函数/ cmdlet打包成单个*.psm1文件.文件存储在同名目录中,实际上代表模块本身.

问题:有没有办法,如何将每个cmdlet /函数分成独立文件?如果我有一个由几个cmdlet组成的模块,将它们全部放在单个*.psm1文件中并不是很方便.

谢谢马修

powershell cmdlets powershell-module

10
推荐指数
2
解决办法
5576
查看次数

使用自己的PowerShell CmdLets将管理命令发送到我的C#Windows服务

我有一个运行服务的C#Windows应用程序.我想利用PowerShell来提供命令行管理界面来管理我正在运行的服务.

从我的角度来看,我试图提供与Exchange 2007相同的管理界面.

您是否有任何关于如何启动/设计管理cmdlet的建议或示例代码,以便"连接"到正在运行的服务以查询或发送管理命令?

如何从powershell命令行访问服务的内部运行时状态?例如,我想实现一个名为Get-ConnectionsInfo的cmdlet,以了解执行cmdlet时Windows服务使用的出站连接数.

一个示例的实际示例或Web链接将受到欢迎.

谢谢,罗伯特

c# powershell cmdlets

9
推荐指数
1
解决办法
2451
查看次数

Powershell - 从C#Cmdlet获取变量

我正在编写一个需要获取全局脚本变量值的C#Cmdlet.我该怎么做?

我注意到Runspace有SessionStateProxy.GetVariable方法.我可以从C#Cmdlet访问运行空间吗?

谢谢!

c# powershell cmdlets

8
推荐指数
1
解决办法
2411
查看次数

Powershell和TFS:tf.exe与Power工具TFS cmdlet?

我正在创建一个脚本来在我的TFS实例中执行大量移动.我有2010 TFS Power Tools提供的tfs cmdlet,但它们的get-help文档非常稀疏.具体来说,Add-TfsPendingChange似乎不支持重命名,这迫使我改为使用"tf.exe rename".

首先:我有没有错过cmdlet的文档?我已尝试使用命令的get-help,但它们不支持-detailed或-examples标志.有什么更多可用吗?

其次:我有什么理由比普通的tf.exe更喜欢任何cmdlet?除了在执行类似功能时通过管道传递对象之外,还有其他好处吗?

powershell cmdlets tfs tf-cli

8
推荐指数
2
解决办法
4156
查看次数

使用Powershell的Invoke-Command调用带参数的批处理文件

我想使用Powershell来调用远程机器上的批处理文件.此批处理文件包含参数.这是我到目前为止所拥有的:

$script = "\\fileshare\script.cmd"
$server = $args[0]
$args [string]::join(',',$args[1 .. ($args.count-1)])

Invoke-Command -computername $server {$script + ' ' + $args}
Run Code Online (Sandbox Code Playgroud)

经过一些搜索,我发现Invoke-Command函数在一个全新的进程中运行它的scriptblock,因此你不能在其中放入变量(它们不会被扩展).这就是-ArgumentList标签的用途.所以我尝试了这个......

Invoke-Command -computername $server {\\fileshare\script.cmd} -ArgumentList "FirstArgument"
Run Code Online (Sandbox Code Playgroud)

这也不起作用......我的批处理脚本告诉我它没有传递任何参数.我找不到任何明确说明的内容,但看起来-ArgumentList参数只适用于Powershell脚本(它不会将它们提供给批处理脚本).

有关如何使用Invoke-Command调用带参数的批处理文件的任何想法?

windows powershell cmdlets batch-file invoke-command

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

powershell参数分配默认值(C#cmdlet)

我正在使用普通的C#设计一个cmdlet.是否可以为参数定义默认值?

脚本cmdlet:

[Parameter] [string] $ParameterName = "defaultValue"
Run Code Online (Sandbox Code Playgroud)

哪个是C#的等价物?

[Parameter]
public string ParameterName { get; set; }
Run Code Online (Sandbox Code Playgroud)

谢谢?

c# powershell cmdlets

7
推荐指数
2
解决办法
5239
查看次数

使用PowerShell CmdLets进行交互

我一直在编写一些使用PowerShell Cmdlet for App-V的实用程序.有趣的是,Microsoft似乎只记录了cmdlet,而不是Powershell模块后面使用的.net程序集.

现在我熟悉P/Invoke和COM Interop,我已经学会了如何使用System.Management.Automation创建一个PowerShell会话并调用cmdlet.

但有些东西对我来说没有味道.我基本上编写自己的包装类来隐藏其余代码中的powershell调用.看起来我应该a)绕过powershell并直接进入它后面的托管库,或者b)应该有更好的机制来为PowerShell cmdlet生成互操作库.

似乎微软现在大量使用PS CmdLets,它实际上已成为一个新的互操作API.

我错过了什么吗?在这种情况下使用什么是好策略?

.net c# powershell cmdlets appv

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

在调用Powershell Cmdlet之间保持状态的最佳实践是什么?

我是Powershell开发的新手,我正在尝试用C#编写一个Powershell Cmdlet,它将用作REST API的接口.

我想有一些设置Cmdlet,用户将被提示输入REST API的Uri,用户名和密码,然后调用Cmldlets,如Get-Item,而不必输入这些参数.非常类似于Powershell的Azure提供程序,您可以通过调用Select-AzureSubscription设置当前订阅,然后再调用Save-AzureVhd而无需再输入订阅名称.

在不同Cmdlet的调用之间保持状态的最佳实践是什么?

编辑:我不确定这是解决它的最佳方法,但我所做的是我添加了一个保持状态的单例类.我有一个Cmdlet,Select-Project -Name MyProject在我的单例类中设置公共属性,然后我的其他Cmdlet可以访问该属性.

c# powershell cmdlets

7
推荐指数
1
解决办法
455
查看次数

在 C# 中运行 PowerShell cmdlet

我需要在 Visual Studio 控制台中使用 C# 运行 powershell cmdlet。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Management.Automation;
using System.Threading;
using System.Management.Automation.Runspaces;
using System.Collections.ObjectModel;
using System.Collections;

namespace ConsoleApp1
{
    class Program
    {
        private static string RunScript()
        {

            Runspace runSpace = RunspaceFactory.CreateRunspace();
            runSpace.Open();
            Pipeline pipeline = runSpace.CreatePipeline();
            Command cmd = new Command("Connect-MsolService"); 
            pipeline.Commands.Add(cmd);
            ICollection results = pipeline.Invoke();  // Here exception occurs
            runSpace.Close();
            StringBuilder stringBuilder = new StringBuilder();
            foreach (PSObject obj in results)
            {
                stringBuilder.AppendLine(obj.ToString());
            }

            return stringBuilder.ToString();
        }




        static …
Run Code Online (Sandbox Code Playgroud)

c# powershell cmdlets visual-studio office365

7
推荐指数
1
解决办法
3232
查看次数

cmdlet和函数之间有什么区别?

模块清单中有两个元素:cmdlet和function.

cmdlet和函数之间有什么区别?

powershell cmdlets function

7
推荐指数
2
解决办法
994
查看次数