标签: powershell-cmdlet

颤振桌面应用程序“错误 MSB3073:命令“setlocal”

我正在使用 VS Code 构建一个 Flutter 桌面应用程序,突然出现了这个完全不熟悉的错误。

错误

任何人有关于如何处理这个问题的解决方案,我很感激

以下是我的颤振医生日志: 在此输入图像描述

visual-c++ flutter-dependencies flutter-desktop visual-studio-2022 powershell-cmdlet

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

完成后自动删除 PowerShell 作业(异步)

我有一个 PowerShell cmdlet,用于简化通过 RDP 连接到另一台计算机的过程。

在该 cmdlet 中,我运行执行以下操作:

    if ($null -ne $Username -and $null -ne $Password) {
        Start-Process -FilePath "cmdkey.exe" -ArgumentList @("/generic:`"TERMSRV/$ComputerName`"", "/user:`"$Username`"", "/pass:`"$Password`"") -WindowStyle Hidden
    }

    Start-Job -ScriptBlock {
        param($InstallPath, $ComputerName, $Port, $Username, $Password)

        $arguments = @("`"$(Join-Path $InstallPath '\Support Files\MSTSC\Default.rdp')`"")
        if ($null -ne $Port) {
            $arguments += "/v:`"$($ComputerName):$($Port)`""
        } else {
            $arguments += "/v:`"$($ComputerName)`""
        }

        Start-Process -FilePath "mstsc.exe" -ArgumentList $arguments -Wait

        if ($null -ne $Username -and $null -ne $Password) {
            Start-Process -FilePath "cmdkey.exe" -ArgumentList @("/delete:`"TERMSRV/$ComputerName`"") -WindowStyle Hidden
        }
    } …
Run Code Online (Sandbox Code Playgroud)

powershell jobs powershell-cmdlet

6
推荐指数
1
解决办法
9832
查看次数

重命名项:Powershell 中的源路径和目标路径必须不同错误

我正在使用 Powershell 并尝试返回目录的子项(该子项恰好是子目录),然后使用 cmdletRename-Item将子目录名称重命名为其他名称。

我觉得下面的代码应该有效:

Get-ChildItem "C:\Users\Admin\Desktop\mydirectory\subdirectory" | Rename-Item -NewName {$_.Name -replace 'test'} 
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

Rename-Item : Source and destination path must be different.

我在这里缺少什么?提前致谢!

powershell get-childitem rename-item-cmdlet powershell-cmdlet

6
推荐指数
1
解决办法
6510
查看次数

使用 powershell Set-GPPermissions cmdlet 设置 GPO 安全筛选器

根据Microsoft 的说法,cmdlet Set-GPPermissions接受选项“-replace”:

“这确保现有的权限级别被新的权限级别取代。”

我从 PowerShell 导入 GPO。之后我想设置安全过滤器。导入后,在设置安全过滤器之前,GPO 的安全过滤为“Authenticated Users”。现在我想删除该过滤器选项并将其替换为“myGroup”。为此,我使用以下命令:

Set-GPPermissions -Name "myGPO" -PermissionLevel GpoApply -TargetName "myGroup" -TargetType Group -replace
Run Code Online (Sandbox Code Playgroud)

结果是添加了一个引用“myGroup”的新安全过滤器,但组“Authenticated Users”并未被删除。Powershell cmdlet 不会替换过滤器,而是添加它。

提示?

提前致谢!

security powershell filter gpo powershell-cmdlet

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

有没有办法以编程方式将 Alias 添加到 Powershell Cmdlet?

我正在为我的应用程序编写自定义 Powershell cmdlet,并且需要为某些 cmdlet 提供别名。假设我有 cmdlet Get-DirectoryListing,并且我想向此 cmdlet 添加别名(例如“gdl”)。我怎样才能做到这一点?

AliasAttribute 在这里不起作用,因为它仅适用于属性、索引器或字段声明。我也知道我们可以使用 Set-Alias 命令,但不知道该把它放在哪里。

是否可以以编程方式向 cmdlet 添加多个别名?

powershell alias powershell-cmdlet

5
推荐指数
1
解决办法
1936
查看次数

我可以控制 cmdlet 显示的日期时间格式吗?

我拥有一个带有 DateTime 属性的 cmdlet,该属性表示服务器上事件的时间戳。该 cmdlet 读取服务器上的日志并输出一些信息。由于一堆事件可能在短时间内发生,因此毫秒精度对于输出的用户来说非常重要。

但是,当使用 format-list 或 format-table 时,输出仅显示秒,例如4/15/2015 5:31:30 PM。我更喜欢使用fff 时间格式

我知道实际数据没有四舍五入,因为如果我查询 DateTime 值的 Millisecond 属性,我会看到正确的值。例如,对于给定的输出$event,如果我的日志行具有时间戳2015-04-16T00:31:30.525Z$event.Timestamp.Millisecond则返回 525。

我可以在 cmdlet 中执行某些操作来指定 DateTime 应以毫秒显示吗?例如,当用户输入:

> Get-LogInfo | ft
Run Code Online (Sandbox Code Playgroud)

我想默认显示:

Timestamp              EventData
---------              -------
4/15/2015 17:31:28.525 (data)
Run Code Online (Sandbox Code Playgroud)

我也希望格式列表有类似的行为。理想情况下,cmdlet 用户无需执行任何额外工作即可查看毫秒。

powershell datetime powershell-cmdlet

5
推荐指数
2
解决办法
5469
查看次数

PowerShell 命令通过代码添加 EF 迁移

想知道是否有人可以帮我解决这个问题。

我可以使用包管理器控制台来启用迁移、添加迁移等。但我希望能够通过 PowerShell 对象使用 C# 代码来完成此操作

到目前为止我所拥有的是:

var ps = PowerShell.Create();
ps.AddCommand("Set-ExecutionPolicy");
ps.AddArgument("Unrestricted");
ps.AddCommand("Import-Module");
ps.AddParameter("Name");
ps.AddArgument(@"'.\packages\EntityFramework.6.1.3\tools\EntityFramework.psm1'";
ps.AddCommand("Add-Migration");
ps.AddParameter("Name");
ps.AddArgument("Migration21Sept");
ps.AddParameter("ProjectName");
ps.AddArgument("Context1");
ps.Invoke();
Run Code Online (Sandbox Code Playgroud)

但是,当我执行此代码时,出现错误:“术语‘Add-Migration’未被识别为 cmdlet、函数、脚本文件或可操作程序的名称”

c# powershell entity-framework entity-framework-migrations powershell-cmdlet

5
推荐指数
1
解决办法
3857
查看次数

组合多个 powershell cmdlet 输出

我需要使用 .NET 中的 CmdLets 组合多个 Power Shell 脚本的输出作为管道输出。

例如 :

Command-GetA  -combine  Command-GetB | Command-GetD
Run Code Online (Sandbox Code Playgroud)

所以我想通过管道发送和GetA的输出。是否有一种紧凑的方法可以使用 powershell 脚本或 .NET cmdlet 来执行此操作?除了将输出存储在数组中然后将其传递到管道等方法之外?GetBGetD

另一个复杂的例子可能是:

Command-GetA  -combine  ( Command-GetB | Command-GetD ) | Command-GetF
Run Code Online (Sandbox Code Playgroud)

这应该结合GetAGetB|GetD作为管道输入发送到GetF

编辑:

如果我能做这样的事情那就太好了 - @( GetA ; GetB) -ConvertToASingleList | 获取C

因此OutputOfGetAOutputOfGetB不应该在 上单独调用GetC。两者都应该作为组合数组或列表对象传递给GetC

.net powershell pipeline c#-4.0 powershell-cmdlet

5
推荐指数
2
解决办法
5836
查看次数

如何在 Github Actions 上执行 MSI 文件(windows-latest runner)

语境

\n

我创建了一个 Github Actions 工作流程,生成.msi我不想稍后执行的文件,以测试应用程序是否按预期工作。

\n

工作流程实现如下

\n
build-windows:\n    runs-on: windows-latest\n    steps:\n      - uses: actions/checkout@v2.3.4\n      - name: Create binary from branch\n        run: |\n          choco install make\n          make build-windows\n      - name: Generate msi\n        shell: powershell\n        run: .\\.github\\scripts\\windows\\gen-win.ps1\n      - name: Install msi\n        run: |\n          echo "Start Msiexec"\n          msiexec /qn /i "file.msi" /L*vx!\n          echo "End Msiexec"\n
Run Code Online (Sandbox Code Playgroud)\n

基本上,此工作流程创建.exe文件(Create binary from branch步骤),然后使用 powershell 中的脚本生成.msi文件(Generate msi步骤),最后尝试安装.msi文件(Install msi步骤)。

\n
\n

问题 …

windows windows-installer github-actions powershell-cmdlet

5
推荐指数
1
解决办法
1320
查看次数

如何使用 PowerShell cmdlet 对 PowerShell 脚本文件进行完整语法检查

我正在编写一个控制台应用程序来验证 PowerShell 脚本语法。我的请求是验证 PowerShell 脚本而不执行该脚本。我在下面的 PowerShell 命令中发现了这个命令,它可以在不执行脚本的情况下执行语法检查。

Get-Command -syntax 'D:\powershell\deleteDemoFile.ps1'
Run Code Online (Sandbox Code Playgroud)

但是,我发现它没有进行完整的语法检查。例如,在 PowerShell 中使用变量而未声明,或者变量在(Function、if、ForEach 等)中存在拼写错误,上述命令不会捕获此类语法错误。

下面是 PowerShell 脚本文件 (.\deleteDemoFile.ps1) 的示例代码。请注意,下面的代码中 (if, Function) 的拼写错误,并且使用了变量“$log_dir”但未声明。

当我运行 PowerShell 命令时,Get-Command -syntax 'D:\powershell\deleteDemoFile.ps1'该命令不会引发任何语法错误。

Write-Host "Hello, World!"

ifTypo(-not (test-path -path $log_dir )) {
   new-item -itemtype directory -path $log_dir
}


FunctionTypo log {
   Param ([string]$log_string)
   write-host $log_string
   add-content $log_file -value $log_string
}

log("Deleting a demo txt file")

# PowerShell -WhatIf safety parameter
Clear-Host
Get-Childitem D:\powershell\SomeFile\demo.txt -Recurse | Remove-Item
Run Code Online (Sandbox Code Playgroud)

所以我想知道。

  • 此 PowerShell 命令进行语法检查的效率如何?
  • 它是否仅验证 PowerShell cmdlet、函数和别名的语法?
  • 此命令与哪个版本的 …

validation powershell syntax-checking powershell-cmdlet

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