在哪里可以找到一些Powershell语法

时间:2020-03-01 20:13:15

标签: powershell

我只是在阅读一些powershell脚本,我发现其中有些是这样写的:$ExecutionContext.InvokeCommand.GetCommand[System.Management.Automation.CommandTypes]::Cmdlet)[System.Reflection.Assembly]::ReflectionOnlyLoadFrom($_.FullName)我的意思是我在哪里可以找到他们?在Microsoft上是否有任何页面列出了它们中的每一个及其正确含义?谢谢

1 个答案:

答案 0 :(得分:5)

您搜索了什么?

所有文档都可以在线获得,做您所看到的事情是很平常的事情。所以,只要您看到此用例...

[System.

...这是为了满足目标而调用Windows .Net库。所有这些都在MSDN和.Net文档站点上进行了介绍。

'powershell using .net classes'

示例退货

PowerShell: How to Create and Use Classes

PowerShell可以使用以下命令创建.Net Framework类 Add-Type Jump cmdlet。要创建类,可以使用C#语言 用于定义类。 C#是Visual Studio的一部分,但具有 Visual Studio不需要创建用于以下用途的类 电源外壳。 C#类定义可以是PowerShell的一部分 脚本文件。无需担心安装任何DLL文件。

$PeopleDefinition=@"
using System;
using System.Collections;
using System.Collections.Generic;

namespace People
{
    public enum Gender

    {
        Unknown,
        Male,
        Female
    }

    public class Person  {}
    public class Persons {}
    public class People  {}
    public static class Factory {}
}
"@

Add-Type -TypeDefinition $PeopleDefinition
Remove-Variable PeopleDefinition
$People = [People.Factory]::BuildPeople()
$Person = $People["Person"]

'powershell using .net namespace'

示例返回:

Discover the Dot NET Namespace and WMI Class-Powershell

.NET命名空间-Powershell

此Blog中的所有脚本都是使用.NET命名空间编写的,因此我们没有 模块依赖性。

如今,Powershell中提供了许多模块。对于 我们的日常操作非常有帮助。如果我们使用内置模块 挑战很少,例如如果使用“ ActiveDirectory”模块; 该模块在Domain Controler中可用,或者您需要安装 手动操作。在这种情况下,如果我们要管理广告;我们需要 “ ActiveDirectory”模块。这就是我提出这个话题的原因 在此博客中。如果使用.NET命名空间,则不需要 模块。

如果我们使用.NET命名空间而不是Powershell Module 在所有Windows 2008系统中可用。我们也没有任何模块 Windows 2008中可用于管理Microsoft PKI。

给出几个重要的命名空间,这些可以使我们的生活更轻松并且我们可以 在没有Powershell模块的情况下编写我们自己的代码。

  1. 我们可以管理我们的Active Directory
NameSpace
[System.DirectoryServices.ActiveDirectory]

只需使用确切的字符串也可以搜索您专门要求的项目的文档/信息/示例/说明。

$ExecutionContext.InvokeCommand.GetCommand

PowerShell Tip: To write a Proxy Function

[System.Management.Automation.CommandTypes]::Cmdlet]

Defines the types of commands that MSH can execute

[System.Reflection.Assembly]::ReflectionOnlyLoadFrom]

Loads an assembly into the reflection-only context, given its path.

更新

我也打算从Microsoft添加这些内容。

.NET API browser 欢迎使用.NET API浏览器-您可以一站式购买Microsoft的所有基于.NET的API。开始搜寻 在下面的框中输入任何托管API。您可以了解更多 有关我们博客文章中的API浏览器的信息。如果您有任何反馈意见, 在GitHub上的MicrosoftDocs / feedback存储库中创建新问题。

Platform Invoke (P/Invoke)

How to: Call Native DLLs from Managed Code Using PInvoke

以及用于查找内容的工具,如上述.Net允许的内容。

What is PInvoke.net?

PInvoke.net主要是一个Wiki,允许开发人员查找,编辑和 添加PInvoke *签名,用户定义的类型以及任何其他信息 与从托管代码调用Win32和其他非托管API有关 (用C#或VB.NET等语言编写)。

这是一个较旧的PowerShell工具,用于浏览类,名称空间,但是它很慢,因为选择列表时需要很长时间才能填充。

PowerShell Object Browser

这是一个PowerShell应用程序,可在资源管理器中显示对象 输入用PowerShell编写的应用程序。 PowerShell对象浏览器 显示任何对象的属性和子对象/集合 PowerShell / .Net框架对象。有关如何使用的说明 这个

下载:PSObjectBrowser.ps1