小编Fox*_*loy的帖子

使用PowerShell在列表中的每个目录上运行命令

我需要在PowerShell的列表中创建每个目录的.zip.我出于某种原因无法弄清楚如何更改到每个目录以运行相对于该路径的命令.

这是我的情况:

$dir = Get-ChildItem d:\directory | ? {$_.PSIsContainer}

$dir | ForEach-Object {Set-Location $_.FullName;
Invoke-Expression "7z.exe A" +  $_.Name + ".rar " + $_.Path + "\"}
Run Code Online (Sandbox Code Playgroud)

命令很难看,但是由于7Zip似乎解析文本的方式,我不得不这样做.我相信命令应该在每个目录中创建一个ZIP文件,名称设置为目录名,并包含目录中的所有文件.

看起来我陷入了一些PowerShell地狱,尽管我甚至无法出于某种原因访问对象的值.

例如,如果我回显$ dir,我会看到我的目录列表.但是,如果我试试

gci $dir[1]
Run Code Online (Sandbox Code Playgroud)

PowerShell什么都不返回.它实际上并不是枚举变量属性中包含的目录路径,而是尝试列出该值中包含的项目,这些项目当然是空的.

是什么赋予了?!我该怎么做呢?

powershell recursion

8
推荐指数
2
解决办法
3万
查看次数

在PowerShell中使用XAML/WPF,如何填充列表框?

我在这里找到了许多很棒的主题,但似乎无法追查我的答案.我正在使用Visual Studio制作GUI并将XAML复制/粘贴到PowerShell中.我知道我应该在c#中这样做,但是因为我的知识还没有,所以对我来说它是纯粹的PowerShell.

所以我已经制作了我的GUI,但我似乎无法填充我的数据字段.做其他事情,如文本框是可以解决的,但我似乎无法让这个listview /数据网格填充值.

在此输入图像描述

此时,已删除与Azure的连接,直到我可以解决将项目添加到列表框的问题.

XAML绘制我的表单

[void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
[xml]$XAML = @'
<Window 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Azure"
        Title="Azure Accelerator" Height="300" Width="315">
    <Grid Margin="0,0,174,0">
        <Image Name="image" HorizontalAlignment="Left" Height="46" Margin="10,10,-97,0" VerticalAlignment="Top" Width="210" Source="C:\Users\stephen\Dropbox\My Code\Powershell\WPF\mslogo.png"/>
        <TextBlock Name="textBlock" HorizontalAlignment="Left" Height="21" Margin="10,61,-140,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="248" Text="VM PickerUse"/>
        <Button Name="btnOK" Content="OK" HorizontalAlignment="Left" Margin="217,268,-160,0" VerticalAlignment="Top" Width="75" Height="23"/>
        <Button Name="btnExit" Content="Cancel" HorizontalAlignment="Left" Margin="12,268,0,0" VerticalAlignment="Top" Width="75" Height="23"/>
        <ListView Name="listView" HorizontalAlignment="Left" Height="108" Margin="12,107,-140,0" VerticalAlignment="Top" Width="246">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="VMName" DisplayMemberBinding ="{Binding VMName}"/>
                    <GridViewColumn Header="Status" DisplayMemberBinding ="{Binding Status}"/>
                    <GridViewColumn Header="Other"/>
                </GridView>
            </ListView.View> …
Run Code Online (Sandbox Code Playgroud)

c# wpf powershell xaml

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

与对象的属性进行比较时,Get-ADUser -Filter 失败

我有一个与导入 csv 文件有关的 powershell 问题,然后通过 csv 文件进行 foreach。

我有如下内容:

$infile = "c:\temp\infile.csv"
$outfile = "c:\temp\outfile.csv"

$csv = Import-csv -path $infile
foreach ($line in $csv)
{
  $data = Get-ADUser -Filter {EmailAddress -eq $line.email} -Property Mail |     Select-Object -ExpandProperty SamAccountName
}
Run Code Online (Sandbox Code Playgroud)

当我做这样的事情时,我收到以下错误:

Get-ADUser : Property: 'email' not found in object of type: 'System.Management.Automation.PSCustomObject'.
At C:\Temp\program1.ps1:11 char:24
+         $ad_data = Get-ADUser <<<<  -Filter {EmailAddress -eq $line.email} -Property Mail | Select-Object -ExpandProperty SamAccountName
    + CategoryInfo          : InvalidArgument: (:) [Get-ADUser], ArgumentException
    + FullyQualifiedErrorId : Property: …
Run Code Online (Sandbox Code Playgroud)

powershell foreach

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

Asp.net DirectoryBrowser功能,如何控制排序?

我有一个 asp.net core webapp,它使用我的目录浏览器功能设置,Startup.cs如下所示。

app.UseDirectoryBrowser(new DirectoryBrowserOptions
    {
        FileProvider = new PhysicalFileProvider(
     Path.Combine(Directory.GetCurrentDirectory(), "youtubeDLs")),
        RequestPath = "/Downloads"
    });
Run Code Online (Sandbox Code Playgroud)

我将其表面化为这样的部分。

<div id="dynamicContentContainer"></div>
<script>
    setTimeout(function () {
        $("#dynamicContentContainer").load("/Downloads")
    }, 2800);

</script>
Run Code Online (Sandbox Code Playgroud)

这太棒了,我有我想要的文件浏览器,它很可爱。

在此输入图像描述

但是,我对文件排序没有任何控制权,我喜欢对DateModified或上的文件进行排序DateCreated

我在 MSDN 上搜索了API Catalog ,但没有找到任何内容。难道这只是我无法控制的事情吗?

asp.net-core

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

C#,将case语句转换为yield语句

我想使用yield关键字将此语句转换为更优雅的东西,以构建用于测试的VM映像列表,但语法让我困惑。

期望的最终目标。

List<VmImages> images;
images[0] - WindowsServer2019
images[1] - WindowsServer2016
images[2] - RhelServer;
images[3] - OpenLogic;
Run Code Online (Sandbox Code Playgroud)

今天的代码如下所示:

for (var i = 0; i < LinuxVMs; i++)
{
    switch (i)
    {
        case 0:
            linuxDistros.Add(ConfigLoader.redHat);
            break;
        case 1:
            linuxDistros.Add(ConfigLoader.openLogic);
            break;
        case 2:
            linuxDistros.Add(ConfigLoader.suse);
            break;
        case 3:
            linuxDistros.Add(ConfigLoader.ubuntu);
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

这感觉是一个很好的例子,使用yield关键字将逻辑简化为这样的,我调用GetLinuxVMs()x次,其中X是的计数LinuxVMs

private static IEnumerable<VmDistribution> GetLinuxVmDistros()
{
    yield return ConfigLoader.redHat;
    yield return ConfigLoader.openLogic;
    yield return ConfigLoader.suse;
    yield return ConfigLoader.canonical;
}
Run Code Online (Sandbox Code Playgroud)

我不确定如何将其集成到我的代码中,这是我尝试过的:

for (var i = 0; i < LinuxVMs; …
Run Code Online (Sandbox Code Playgroud)

c# yield yield-return

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

标签 统计

powershell ×3

c# ×2

asp.net-core ×1

foreach ×1

recursion ×1

wpf ×1

xaml ×1

yield ×1

yield-return ×1