问题标签 [powershell-module]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2897 浏览

sql - 无法连接到数据库服务器。如何使用 powershell 和集成安全性连接到不在我的本地主机上的数据库?

我的问题的背景

在任何时候,我都期待着穿着黑色西装和黑色太阳镜的保安人员来带我走,因为我所有的 sql server 登录尝试......

我使用并改编了iris classon 的示例以通过 Powershell 连接到数据库。修改后的代码使用 Integrated Security=True"

有效的热狗。谢谢鸢尾花。

我阅读了snapin 和 Import-Module sqlps执行 sql 命令的方式。我还阅读了Michael Sorens在他的回答中提供的所有链接。我可以挂载一个 sqlserver 连接mount mydb SQLSERVER SQLSERVER:\SQL,使用 ls 或 dir,沿着对象的路径走,等等。我还修改了 Iris 提供的主要部分

这个版本的 Invoke-Sqlcmd 允许我连接到“企业”数据库。提供的所有参考资料的问题是他们希望您使用 localhost sqlexpress 数据库。我尝试使用的那一刻

或类似的结构,我收到一条以

...警告:无法获取 SQL Server 服务信息。尝试连接到“my_enterprise_db_server”上的 WMI 失败,出现以下错误:访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))

我还看到提到了 SQLCMDSERVER 和 SQLCMDDBNAME 环境变量。我将这些设置为

生产

问题

对于不在本地计算机上的数据库,如何正确使用 set-location 或 New-PSDrive-Name?

0 投票
2 回答
1404 浏览

powershell - 安装补丁后Powershell模块不加载

我面临一个与补丁安装后自动加载模块相关的问题。顺序如下:

  • 我有一个运行在版本 1.0.8802 中的 .NET 服务
  • 从 Powershell (V 4.0) 我看到模块MyAgent已加载并且它的命令行开关是可访问的
  • 即使在我重新启动计算机后,MyAgent当我打开 Powershell 时也会加载(无需显式执行任何加载/获取模块命令)
  • 现在我使用 WUA(Windows 更新代理)为我的 .NET 服务安装补丁。补丁安装成功并自动重启电脑
  • 现在我打开 PowerShell,MyAgent没有加载。它出现在Get-Module -ListAvailable. 一旦我跑步Import-Module MyAgent,一切都会像以前一样开始工作。

注意事项:

  • MyAgent 模块c:\windows\system32\Windowspowershell\v1.0\modules在这两种情况下都存在
  • 在这两种情况下$PSModuleAutoloadingPreference都是 null
  • $env:PSModulePath的指向也是正确的c:\windows\system32\Windowspowershell\v1.0\modules\

我感到困惑的原因是,为什么补丁安装后模块没有自动加载(尽管模块存在于正确的模块文件夹中)?当我在C:\Users\<<user>>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1其中创建内容为Import-Module MyAgent. 具有讽刺意味的是,如果我将配置文件保存在C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1补丁安装本身会失败而没有任何明显的错误。我在这里想念什么?

请帮忙!

0 投票
2 回答
2033 浏览

powershell - 在模块中的 PowerShell 函数上使用脚本范围修饰符没有效果?

我假设script在 PowerShell 模块中的函数上使用范围修饰符会阻止函数被导出。样本:

当我导入模块时,Get-One函数被导出。

问题

  1. 使用script范围修饰符将模块功能设为私有是否应该有效?
  2. 如果不是:为什么?我可以使用任何其他范围修饰符吗?

我知道我可以Export-ModuleMember用来控制要导出的函数,但我只有几个不应该导出的函数。我宁愿指定要忽略的功能。

0 投票
2 回答
1193 浏览

c# - C# 二进制 PowerShell 模块中的 ValidateScript ParameterAttribute

我最近开始在 C# 中尝试二进制 PowerShell 编程,但我在使用 ParameterValidationAttributes(主要是 ValidateScript 属性)时遇到了一些问题。基本上,我想创建一个名为“ComputerName”的参数并验证当时计算机是否在线。在 PowerShell 中很容易:

但我不知道如何在 C# 中复制它。ValidateScript 属性采用 ScriptBlock 对象http://msdn.microsoft.com/en-us/library/system.management.automation.scriptblock(v=vs.85).aspx我只是不确定如何在 C# 中创建它,我真的找不到任何例子。

C# 对我来说很新,所以如果这是一个愚蠢的问题,我很抱歉。这是 ValidateScript 属性类的链接:http: //msdn.microsoft.com/en-us/library/system.management.automation.validatescriptattribute (v=vs.85).aspx

0 投票
1 回答
281 浏览

c# - PowerShell 自定义对象,忽略标准输出中的属性

我编写了一个 PowerShell 模块并返回了一些自定义对象。现在我不想显示每个属性,比如Get-ChildItem.

在此处输入图像描述

Length如果我显示成员,例如和之间没有区别ExistsExists那么,如果我输入,为什么不显示gci "C:\temp\u_ex150113.log"在此处输入图像描述

这是我的自定义对象


编辑: 多亏了答案,我现在有了一个更清晰的标准。

为此,我在项目中添加了三个文件:

  • ConvertFromIISLogFile.format.ps1xml
  • ConvertFromIISLogFile.ps1xml
  • ConvertFromIISLogFile.psd1

ConvertFromIISLogFile.format.ps1xml

ConvertFromIISLogFile.ps1xml

ConvertFromIISLogFile.psd1

0 投票
1 回答
502 浏览

c# - Import Binary Modules in Powershell 3 with dll references located in different folder

I am converting a powershell snapin(which was working really fine) to a powershell module.

I have added the output dll to a folder with the same name as the dll and added the Module path to the $env:PSModulePath

The import seems to fail because the Snapin had some references to some other dll's(located in the bin\ folder)

I also don't want to copy all referenced dll's into the modules folder because they are already in the bin folder.

Is there a way to indicate the folder in which the referenced dll's are located in powershell? Maybe to indicate the folder like it is done for individual dll's:

[reflection.assembly]::loadfrom(full name of referenced dll)

0 投票
2 回答
825 浏览

powershell - 有没有理由明确导入模块?

我刚刚阅读 PowerShell模块指南页面,我注意到该Import-Module部分有一行:

以下操作触发模块的自动导入,也称为“模块自动加载”。

  • 在命令中使用 cmdlet。例如,键入 Get-ExecutionPolicy 会导入包含 Get-ExecutionPolicy cmdlet 的 Microsoft.PowerShell.Security 模块。

既然如此,我们为什么要关心使用Import-Module?它不是总是自动照顾我们吗?在什么情况下我需要明确写出Import-Module

0 投票
3 回答
6779 浏览

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

我已经为此苦苦挣扎了一段时间。我打算为我的项目创建新的 PowerShell 模块。目的是将几个自定义 cmdlet 打包到独立单元中,我可以通过我们的 Nexus 存储库(或通过其他任何东西)将其部署到其他机器。

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

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

谢谢马修

0 投票
1 回答
2168 浏览

powershell - PowerShell:模块、它们的位置和重新加载

我有一个非常简单的 PS 脚本,它指的是一堆自写模块(psm1)。当我从 PowerShell ISE 运行我的脚本时,我经常把我的头发拉出来,因为我的模块的最新版本没有被执行(但是一些过时的-somewhere-stored-in-memory-version)。

我有 google-d 和 google-d,并且阅读并尝试过,现在是我非常感谢了解到底发生了什么的时候,而不是一直在解决这些问题。

一些示例代码:

(该脚本将配置将在我们的机器中服务的 PC,设置共享,创建本地用户,配置 NIC,诸如此类)

我首先将模块的位置添加到模块路径中,如下所示:

然后,我加载所需的模块:

最后,我问用户应该配置哪台 PC:

当我更改配置模块中的某些内容时,问题就出现了。当我简单地添加 (eg) Write-Host "bla bla",按下保存按钮,并再次调试我的主脚本(如上所示的脚本),PowerShell 将运行版本的模块。

除非我通过以下任一方式重新加载模块:

  • rmo Configure-EngravePC其次是ipmo Configure-EngravePC
  • ipmo Configure-EngravePC -Force

我的模块的完全相同的“旧”版本将被执行。

谁能指出我通常如何处理这个问题?为什么,为什么,为什么,当我通过调试器运行我的脚本时,我什至必须重新加载模块?为什么它会“存储”在不同会话中运行的模块?难道我做错了什么?

非常感谢,我希望有人能详细说明这一点,我经常卡住..

我非常喜欢有适当解释的答案(或参考有关此主题的良好文档)

0 投票
2 回答
1474 浏览

powershell - 我可以将多个用户访问的 Powershell 模块放在哪里?

我使用了变量 $Env:PSModulePath ,它提供了两条路径。

似乎只有我可以访问我的用户。但是我的模块将被多人使用,并且在卸载我的应用程序时[我正在通过 msi 安装我的模块],即使其他一些用户卸载它也应该被删除。

我可以为我的应用程序相关模块使用“C:\Windows\system32\WindowsPowerShell\v1.0\Modules\”吗?或者还有其他更好的地方吗?