标签: new-item

在 PowerShell 的模块中动态创建函数

假设我在一个模块(称为 MyModule.psm1,在模块的适当位置)中有以下代码:

function new-function{

    $greeting='hello world'
    new-item -path function:\ -name write-greeting -value {write-output $greeting} -Options AllScope
    write-greeting
}
Run Code Online (Sandbox Code Playgroud)

导入模块并运行 new-function 后,我可以成功调用 write-greeting 函数(由 new-function 创建)。

当我尝试在 new-function 调用范围之外调用 write-greeting 函数时,它失败了,因为该函数不存在。

我试过 dot-sourcing 新功能,但这无济于事。我已经提供了-option Allscope, 但显然它只包含在子作用域中。

我还尝试使用 export-modulemember write-greeting 明确遵循 new-item 调用,该调用不会出错,但也不会创建函数。

我希望能够从模块内部的函数动态创建一个函数(即通过 new-item,因为函数的内容和名称将根据输入而变化),并使新创建的函数可用于在模块外部调用。

具体来说,我希望能够做到这一点:

Import-module MyModule
New-Function
write-greeting
Run Code Online (Sandbox Code Playgroud)

并看到“hello world”作为输出

有任何想法吗?

powershell module new-item

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

使用PowerShell在同一命令中创建目录和文件

我尝试在一个PowerShell命令中创建一个文件夹和一个文件:我试过:

New-Item hello\test\ (New-Item hello\test\file.txt -type file) -type directory -Force
Run Code Online (Sandbox Code Playgroud)

New-Item file.txt (New-Item hello\test\ -type direcotry) -type file -Force
Run Code Online (Sandbox Code Playgroud)

但两者似乎都没有按预期工作.我想要实现的是创建一个命令hello\test\file.txt

powershell new-item

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

Powershell:从 New-Item 输出完整错误消息的正确方法是什么?

我正在运行vagrantwinrm 命令,并且注意到失败的命令不会打印出整个错误输出...我认为|可能用于扩展此类命令的输出...但是经过一些互联网搜索并尝试一些选项,例如:

  • | fl
  • | Format-Table -Wrap -Au

我仍然...在错误消息的最终输出中得到 a ,即在命令回显的部分。

NewItemIOError
At line:1 char:1
+ New-Item -path C:\var\lib\kubelet\etc\kubernetes\pki\ -type SymbolicL ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

上述失败的发生有一个明显而明显的原因,所以我不需要帮助调试问题,而是通常想知道使用什么正确的选项New-Item来确保 powershell 向我显示其失败执行的完整输出在具有 10000 行日志的自动化环境中。

从 new-item 和类似的 powershell 命令输出详细错误消息的最简单方法是什么?

powershell verbose new-item

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

新项目弄乱了我的变量 PowerShell

我写了一个非常简单的脚本来获取一个随机的免费驱动器号。该函数找到一个随机的空闲字母,创建一个该驱动器字母名称的新空文本文件,例如。Q.txt 然后我将该值作为 $new_letter 返回,但是当它以某种方式从函数中出来时,新创建的文件路径是变量的一部分 C:\AppPack\Logs\Q.txt Q

是不是New-Item我的$new_letter变量有问题?


function get_drive_letter()
{
$letter_acquired = $false
Do
{
$new_letter = Get-ChildItem function:[h-z]: -Name | ForEach-Object { if (!(Test-Path $_)){$_} } | random -Count 1 | ForEach-Object {$_ -replace ':$', ''}
    write-host ("RIGHT AFTER " + $new_letter)
    if (!(test-path "C:\AppPack\Logs\$new_letter.txt"))
    {    
    New-Item -Path C:\AppPack\Logs\ -Name "$new_letter.txt" -ItemType "file" 
    write-host ("FROM FUNCTION " + $new_letter)
    $letter_acquired = $true
    return $new_letter
     }
    
    
    else
    {
    write-host ("LETTER USED ALREADY")
    write-host ($new_letter)
    } …
Run Code Online (Sandbox Code Playgroud)

variables powershell function new-item

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

标签 统计

new-item ×4

powershell ×4

function ×1

module ×1

variables ×1

verbose ×1