问题标签 [powershell-5.1]
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.
powershell - 奇怪的 CSV 标头空白处理
我想知道 PowerShell 究竟如何处理 CSV 标头中的(未加引号的)空格...
考虑这个简单的例子:
奇迹般有效。现在,当我在标题中添加一个空格时,它将被保留:
很公平。但是当我添加更多空格时,属性名称的末尾仍然只有一个空格:
我在想,也许 PowerShell 用一个空格替换多个连续的空格,以清理由多个单词组成的标题,但没有:
更奇怪的是:现在,最后似乎保留了任意数量的空格,奇怪的“单个空格”行为消失了:
另外,请注意,任何前导空格显然总是被修剪。但到目前为止,我还没有做更多的测试。
谁能解释这种行为?
我找不到任何文档。如果所有的空白要么总是被保留,要么总是被修剪,这将是有意义的。但是这种行为非常令人困惑。Import-Csv
顺便说一句,似乎有相同的行为。
(版本:PowerShell 5.1)
编辑
请注意,我不拥有CSV。它是由客户提供的。我知道可以引用标题,但这是关于现有 CSV的处理,而不是如何修改它。我知道如何解决这个问题,但这不是问题的目的。
理想情况下,我希望 PowerShell不会保留任何尾随空格,所以我想知道它为什么会保留,因为这使它更难使用。
powershell - PowerShell 批准的用于“归档”和“取消归档”数据项的动词
我有支持存档和取消存档的数据,但用于数据管理或资源生命周期的 PowerShell 命令的已批准动词似乎都不合适。
从技术上讲,相关数据项实际上可以通过 RESTful API 获得,并通过 ID 引用。我正在构建的 Cmdlet 与所述 API 对话。
编辑:这些数据项被更准确地描述为记录,归档行为是某种形式的重新分类或将所述记录重新标记为处于归档状态。
哪些动词最合适,选择时应该考虑哪些实现因素和考虑?
powershell - PowerShell Get-ADUser 与 ANR
我正在尝试使用以下语句在 Active Directory 中搜索用户,但在使用 $("smtp:$user") 时出现错误。
get-aduser -filter {(anr -eq $user) -or (anr -eq $("smtp:$user"))}
谁能解释一下为什么,或者有没有更好的方法来达到同样的结果。我希望用户能够包含姓名、电子邮件或 SAM 信息,并使用相同的代码进行搜索。
get-aduser :无法处理参数,因为参数“路径”的值无效。更改“路径”参数的值并再次运行该操作。
在 line:1 char:1。
get-aduser -filter {(anr -eq $user) -or (anr -eq $("smtp:$user"))}
CategoryInfo:NotSpecified: (:) [Get-ADUser], PSArgumentException
FullyQualifiedErrorId:ActiveDirectoryCmdlet:System。 Management.Automation.PSargumentException,Microsoft.ActiveDirectory.Management.Commands.GetADUser
c# - PowerShell:.NET 程序集的 Import-Module 或 Add-Type?
我正在使用 PowerShell 5.1、Windows 10 x64。
我应该使用这 2 个 cmdlet 中的哪一个来将 .NET 程序集(特别是 .NET Framework 4+ 程序集)加载到 PowerShell 中?它们之间的核心区别是什么?我想加载程序集以访问类型、创建对象、调用方法等。
我在文档中没有找到任何明确的陈述。这些 cmdlet 被描述为完全不同的东西。MSDN 文档Import-Module
甚至不包含.dll
加载程序集的示例——只有 PowerShell 模块。但是Import-Module
适用于 .NET Framework 程序集(.dll
尽管如此):我可以完美地使用导入程序集中的类型,它们引用的程序集也被解析和加载。这是为什么?
换句话说,根据我的经验,我还没有发现这两种程序集导入方法之间有任何区别(至少对于 .NET Framework 4.dll
程序集而言)。
这篇旧博文:在 Windows PowerShell 中使用 .NET Framework 程序集甚至使用Reflection.Assembly.LoadWithPartialName
! 我相信这是因为他们从 GAC 加载程序集并且不想指定它的完整路径(不过我可能错了)。
对于我的程序集,我知道它们的完整路径,因此我可以在Import-Module
和中指定它Add-Type
。同样,有什么区别,我应该使用什么?
谢谢!
c# - PowerShell:为什么我能够在一个会话中加载同一个 .NET 程序集的多个版本并“绕过依赖地狱”?
我在 Windows 10 x64、PowerShell 版本 5.1 中工作。
我有多个版本的 .NET Framework 4.0 程序集 (.dll) 用 C#(我自己)编写。程序集未签名。他们的版本是AssemblyInfo.cs
通过设置的[assembly: AssemblyVersion("X.X.X.X")]
。我的[assembly: AssemblyFileVersion("X.X.X.X")]
标签不存在AssemblyInfo.cs
!这些程序集在常规 .NET Framework 应用程序中使用,它们不是专门的 PowerShell 模块,也没有清单文件。
我在一些 PowerShell 脚本中使用这个程序集来创建对象并从中调用方法。
我有这个程序集的两个版本,比如说1.1.1.100
和1.2.1.100
。1.1.1.100
当我通过 PowerShell导入假设版本时Import-Module "D:\path\to_v1.1\MyAssembly.dll"
,它工作得很好。当我打电话时,Get-Module
我在列表中看到了这个导入的程序集:
现在事情开始变得有趣了。我导入了其他版本的程序集Import-Module "D:\another\path\to_v1.2\MyAssembly.dll"
。它再次工作得很好。所以这是我的问题:
Q1。为什么没有显示错误?我希望得到一个错误:我正在尝试加载一个名称相同但版本不同的程序集。我认为您无法在一个上下文中加载同一程序集的两个不同版本。这些情况是如何处理的,使用了哪些加载上下文?也许根本没有加载第二个版本?
Q2。 Get-Module
现在显示两个具有相同名称和版本的模块,如下所示:
我先导入哪个版本并不重要。在第二个Import-Module
,最早导入的版本在Get-Module
列表中重复。我也只能使用最早导入的程序集版本中的类型/方法。
Q3。我的程序集对我的其他程序集(在同一文件夹中)有一些依赖关系。这些依赖项会自动解析并隐式“导入”到当前会话(我可以使用它们中的类型没问题)。主程序的每个版本都MyAssembly.dll
依赖于这些辅助程序集的不同版本。当我导入另一个版本时MyAssembly
,我也没有收到关于版本冲突的错误。再一次,我只能使用最早导入的辅助程序集中的类型。我读过“依赖地狱”,这应该是不可能的——那怎么可能呢?
我对 NuGet 包Microsoft.CodeAnalysis.CSharp.dll
、版本3.4.0
和3.11.0
. 结果是一样的:版本及其依赖导入没问题,但只有最早导入的版本可用。
概括
当我导入相同程序集的不同版本时,我没有收到任何错误,但只有最早的导入版本可用。我想了解为什么我能够在一个会话中加载程序集的多个版本而不会出错,PowerShell 通常如何处理这些情况以及为什么它显示两个具有相同版本的模块,为什么我没有得到依赖地狱。
我想了解发生了什么,而不仅仅是“让它工作”。
我在这里想念什么?
谢谢!
powershell - 为什么 Powershell 输出在 5.1 和 Core 7.1.4 之间不同
我有一个 PowerShell 代码块,它运行一个命令,然后对其进行按摩并将其写入一个文本文件。
当我在 PowerShell 5.1 中运行它时,我得到:
当我在 PowerShell Core 7.1.4 中运行它时,我得到:
这弄乱了脚本的其余部分。我尝试了 -Encoding UTF8 但没有任何改变。如何使它能够在 5.1 和 Core 7.1 中运行?
更多信息:
它以这种方式编写输出的原因是因为这是从输入中解析数据的方式。如何摆脱空格,特别是使其在两个版本的代码中都可用?
powershell - 为什么管道不适用于转换后的 json 对象?
考虑以下代码:
为什么不能使用第一个选项?从 json 转换对象后,该Where-Object
函数似乎不正确。这发生在 PowerShell 版本上5.1
。
我们在这里遗漏了一些明显的东西吗?
powershell - 如何以最简单的方式从字符串中获取值
我有两个字符串:
第二 - 无论如何,例如:
我需要一个解决方案来获取映射字符串,所以如果我的 $server = "myhost1" 我想为 "myhost2" - "bbbb" 获取 "aaaa"。
带映射的字符串可以用“:”或“|”分隔 或其他。真的我不在乎。我可以自己创建它。但它必须给我一个字符串。有人可以帮我吗?
powershell - 动态参数开关读起来不像静态参数 [开关]?
希望标题足够清楚,但是与静态(类型转换)开关相比,我在如何评估DynamicParameter Switch方面遇到了一些麻烦。
在以下代码块中,只有当其他 2 个参数不为空和/或不为空时,才会有 2 个开关可用:
- 添加
- 消除
跑步:
Test-DynamParam -Workflow 'd' -UserName 'a' -Add
返回空。
不幸的是,无论开关是否存在,$Add.IsPresent
都不会评估为任何布尔值。然而在这个函数中它是(这是有道理的):
跑步:
Test-StaticParam -Add
返回True
。
问题
如何根据选择的动态参数进行评估?
active-directory - Windows Server 2012R2/2016:如何使用 Get-WindowsFeature 检查 Active Directory PowerShell 模块
Windows Server 2012R2/2016:如何使用 Get-WindowsFeature 检查 Active Directory PowerShell 模块
我需要一种方法来确保我运行 AD 脚本的 Windows 2012R2/2016 服务器已导入 Active-Directory,如果没有则安装它
Blockquote 这行得通吗?我的测试在“(Import-Module ActiveDirectory -Proxy proxy.verizon.com:80 -ErrorAction Continue -Verbose)”处没有表明“真实”响应