簡體   English   中英

從 PowerShell 中的不同文件調用 function

[英]Calling function from different file in PowerShell

我做了很多谷歌搜索,但沒有找到解決我問題的方法。 我正在重建我們為 ServiceDesk 工作的工具,但遇到了問題。

我使用帶有開關塊的菜單和子菜單。 菜單本身是同一文件中的函數。 然而,除了子菜單的“編號”之外,我還設置了一些其他命令作為我想要工作的功能。 我嘗試在同一文檔中的開關上方聲明函數,並嘗試使用不同的文件來調用這些函數,但我無法使其工作。


Function sys
{
    Param (
    [string]$computer
    )
    systeminfo /s $computer
}

# Visa huvudmeny
Function ShowMenu
{
 
    Write-Host "

Kommandon:                                                                                                                   
1                      - Alternativ för datorer                                                           
2                      - Alternativ för användare                                                
3                      - Övriga alternativ                                                    
"
}
 
# Visa Datorer-meny
Function subComputer
{
    Write-Host "
Kommandon:                                                                                                                   
rem [datornamn]    - se vem som är inloggad, tryck på y för att koppla upp dig   
rdp [datornamn]    - Starta rdp och koppla upp mot dator                         
rc [datornamn]     - mappa upp användarens dator                                                   
mac [datornamn]    - hämta datorns MAC-adress                                          sys [datornamn]    - se information om datorn/systemet                                
update [datornamn] - kör GPUpdate /force på användarens FMAP                                  
reboot [datornamn] - Starta om användarens FMAP                                                
ping [datornamn]   - pinga användares dator                                                        
pingt [datornamn]  - pinga användares dator (pingsnurra), avbryt med Ctrl-C           
q                  - tillbaka till huvudmenyn                           
"
 
}
 
# Visa Användare-meny
Function subUser
{
    Write-Host "
Kommandon:                                                                                                                                                                 
password           - starta lösenordsgeneratorn                                                    
q                  - tillbaka till huvudmenyn                                            
 
"
}
 
# Visa Övrigt-meny
Function subMisc
{
    Write-Host "

Kommandon:                                                                                                                   
remlog             - Visa loggfilen för rem                                      
rdplog             - Visa loggfilen för rdp                                      
archive            - Arkivera loggfilerna                                                                                              
gw                 - öppna fönstret för att kunna pinga gateway                       
password           - starta lösenordsgeneratorn                                                    
q                  - tillbaka till huvudmenyn                                            
"
} 


do
{
    Clear-Host
    ShowMenu
    $menuItem = Read-Host
    switch($menuItem)
    {
        "1"
        {
        
            do{
                Clear-Host
                subComputer
                $subComputer = Read-Host
                switch($subComputer)
                {
                    "1"{subComputer}
                    "2"{subUser}
                    "3"{subMisc}
                }
            }
            until ($subComputer -eq "q")
        }
        "2"
        {
        
            do{
                Clear-Host
                subUser
                $subUser = Read-Host
                switch($subUser)
                {
                    "1"{subComputer}
                    "2"{subUser}
                    "3"{subMisc}
                }
            }
            until ($subUser -eq "q")
        }
        "3"
        {
        
            do{
                Clear-Host
                subMisc
                $subMisc = Read-Host
                switch($subMisc)
                {
                    "1"{subComputer}
                    "2"{subUser}
                    "3"{subMisc}
                }
            }
            until ($subMisc -eq "q")
        }
        default{. 'C:\Temp\SDV 4.2 Lite\WindowsPowerShell\moduler\func.ps1'}
    }
}
until ($menuItem -eq "q")

現在我已將外部函數文件放在默認值中,但這不起作用。 我不知道把它放在哪里讓它調用我的其他函數。 它可以毫無問題地接受 1、2、3 和 q。

您需要在代碼到達需要調用函數的位置之前func.ps1文件進行點源化 - 在進入循環之前執行此操作可能是您想要的:

# dot-source function definitions, discard any output from the script itself
$null = . 'C:\Temp\SDV 4.2 Lite\WindowsPowerShell\moduler\func.ps1'

do
{
  # ...
}until($menuItem -eq "q")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM